- Home /
 
Move file from streaming assets to other directory
Hello there, how can i move a file (.jpg) located in the streaming assets to another folder on my device (Android)?
This is what i got so far:
     private IEnumerator MoveJPG() {
         // Get path of file in streaming assets
         string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");    
         // Using AssetBundle to get the file is correct?
         AssetBundle result = null;
 
         WWW www = new WWW(filePath);
         yield return www;
         result = www.assetBundle;
 
         // How to move the file from a to b now?
         File.Move( result.? , filedir);
     }
 
               Pretty new in using streaming assets.
Any advice would be great :)
Thank you
Answer by Bodhid · Aug 11, 2017 at 12:57 PM
You can extract the byte array from the www and write that to a new file in (for example) persistent datapath.
System.IO.File.WriteAllBytes(Application.persistentDataPath + "/myfile", www.bytes);
Thanks for advice! Unfortunately the byte array returns 0.
The file gets found and created.
     private IEnumerator $$anonymous$$oveJPG() {
         Debug.Log("Trying to create file");
 
         // Get path of file in strea$$anonymous$$g assets
         string filePath = Application.strea$$anonymous$$gAssetsPath + "/" + fileName;
         Debug.Log("Searching for file in strea$$anonymous$$g assets " + filePath);
 
         if(File.Exists(filePath)) {
             Debug.Log("File found! Now trying to write down bytes in new file.");
 
             WWW www = new WWW(filePath);
             yield return www;
 
             Debug.LogWarning("File size in bytes: " + www.bytesDownloaded); // Returns 0
 
             // Write down the file using the byte array
             File.WriteAllBytes(filedir + "/" + fileName, www.bytes);
         } else
             Debug.LogError("Infofile does not exist: " + filePath); 
     }
                 $$anonymous$$aybe you can open the strea$$anonymous$$gassets file with System.IO.File.ReadAllBytes to get the byte array. then you don't need a www.
That works for windows. On android i can't even create the file:
     private IEnumerator $$anonymous$$oveJPG() {
         Debug.Log("Trying to create file");
 
         // Get path of file in strea$$anonymous$$g assets
         string filePath = "empty";
 
 #if UNITY_EDITOR    
         filePath = Application.strea$$anonymous$$gAssetsPath + "/" + fileName;
 #elif UNITY_ANDROID
         filePath = "jar:file://" + Application.dataPath + "!/assets/" + fileName;
 #endif
         Debug.Log("Searching for file in strea$$anonymous$$g assets " + filePath);
 
         WWW www = new WWW(filePath);
         yield return www;
 
         byte[] bytes = File.ReadAllBytes(filePath);
         File.WriteAllBytes(filedir + "/" + fileName, www.bytes);
     }
                   Your answer