- 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);
}