Last active
March 10, 2021 21:42
-
-
Save michelerenzullo/bcbbbeeab879ffc5af04c8949f1e03c1 to your computer and use it in GitHub Desktop.
smali copyFiles function
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.method public static copyFiles(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z | |
.registers 11 | |
new-instance v0, Ljava/io/File; | |
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; | |
move-result-object v1 | |
const-string v2, "Download/Effects" | |
invoke-direct {v0, v1, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V | |
invoke-virtual {v0}, Ljava/io/File;->exists()Z | |
move-result v1 | |
if-nez v1, :cond_14 | |
invoke-virtual {v0}, Ljava/io/File;->mkdir()Z | |
:cond_14 | |
new-instance v1, Ljava/io/File; | |
invoke-direct {v1, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V | |
invoke-virtual {v1}, Ljava/io/File;->list()[Ljava/lang/String; | |
move-result-object v1 | |
const/4 v2, 0x0 | |
if-eqz v1, :cond_88 | |
array-length v3, v1 | |
if-lez v3, :cond_88 | |
new-instance v3, Ljava/io/File; | |
new-instance v4, Ljava/lang/StringBuilder; | |
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
const-string p2, " - " | |
invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object p1 | |
invoke-direct {v3, v0, p1}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V | |
invoke-virtual {v3}, Ljava/io/File;->exists()Z | |
move-result p1 | |
if-nez p1, :cond_45 | |
invoke-virtual {v3}, Ljava/io/File;->mkdir()Z | |
:cond_45 | |
array-length p1, v1 | |
const/4 p2, 0x0 | |
:goto_47 | |
if-ge p2, p1, :cond_86 | |
aget-object v0, v1, p2 | |
new-instance v4, Ljava/io/File; | |
invoke-direct {v4, v3, v0}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V | |
invoke-virtual {v4}, Ljava/io/File;->exists()Z | |
move-result v5 | |
if-nez v5, :cond_83 | |
new-instance v5, Ljava/io/BufferedInputStream; | |
new-instance v6, Ljava/io/FileInputStream; | |
new-instance v7, Ljava/io/File; | |
invoke-direct {v7, p0, v0}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V | |
invoke-direct {v6, v7}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V | |
invoke-direct {v5, v6}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V | |
new-instance v0, Ljava/io/BufferedOutputStream; | |
new-instance v6, Ljava/io/FileOutputStream; | |
invoke-direct {v6, v4}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V | |
invoke-direct {v0, v6}, Ljava/io/BufferedOutputStream;-><init>(Ljava/io/OutputStream;)V | |
const/high16 v4, 0x100000 | |
new-array v4, v4, [B | |
:goto_73 | |
invoke-virtual {v5, v4}, Ljava/io/BufferedInputStream;->read([B)I | |
move-result v6 | |
if-lez v6, :cond_7d | |
invoke-virtual {v0, v4, v2, v6}, Ljava/io/BufferedOutputStream;->write([BII)V | |
goto :goto_73 | |
:cond_7d | |
invoke-virtual {v0}, Ljava/io/BufferedOutputStream;->close()V | |
invoke-virtual {v5}, Ljava/io/BufferedInputStream;->close()V | |
:cond_83 | |
add-int/lit8 p2, p2, 0x1 | |
goto :goto_47 | |
:cond_86 | |
const/4 p0, 0x1 | |
return p0 | |
:cond_88 | |
return v2 | |
.end method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment