I try to save a txt file in my folder, in internal storage, but I face the same problem every time:
"Source Not Found"
I write my code in different ways expressed here as follows but in all ways I have the same problem.
It is worth saying that I even add
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
in Manifest.xml that is not necessary for internal storage.
It is needless to say that I don't have any problem to save files in /data/data/package/files path, but when I add my folder in the files' root for example /data/data/package/files/myforlder/myfile.txt I face the "Source Not Found" problem.
Could you point me in right direction to solve this ?
The second question is that, for saving a file in an external folder in external storage.
(for example: sdCard or USB storage) is the scenario different or is it same ?
First Way:
OutputStreamWriter out; try { File path=new File(getFilesDir(),"myfolder"); File mypath=new File(path,"myfile.txt"); if (!mypath.exists()) { out = new OutputStreamWriter(openFileOutput( mypath.getAbsolutePath() , MODE_PRIVATE)); out.write("test"); out.close(); } }
Second way:
OutputStreamWriter out; try { ContextWrapper cw = new ContextWrapper(this); File path = cw.getDir("myfolder", Context.MODE_PRIVATE); if (!path.exists()) { path.createNewFile(); path.mkdir(); } File mypath=new File(path,"myfile.txt"); if (!mypath.exists()) { out = new OutputStreamWriter(openFileOutput( mypath.getAbsolutePath() , MODE_PRIVATE)); out.write("test"); out.close(); } }
Third way:
File path=getFilesDir(); String mypath=path.toString() + "/myfolder"; OutputStreamWriter out; try { File f = new File(mypath , "/myfile.txt" ); out = new OutputStreamWriter(openFileOutput(f.getPath(), MODE_PRIVATE)); out.write("test"); out.close(); }
Fourth Way:
File path=getFilesDir(); OutputStreamWriter out; try { File f = new File(path.getPath() + "/myfolder/myfile.txt" ); out = new OutputStreamWriter(openFileOutput(f.getPath(), MODE_PRIVATE)); out.write("test"); out.close(); }
Fifth way:
File path=getFilesDir(); OutputStreamWriter out; try { File f = new File(path.getCanonicalPath() + "/myfile.txt"); out = new OutputStreamWriter(openFileOutput( f.getPath(), MODE_PRIVATE)); out.write("test"); out.close(); }
With Google's Android 8.0 Oreo release, meanwhile, the file manager lives in Android's Downloads app. All you have to do is open that app and select the "Show internal storage" option in its menu to browse through your phone's full internal storage.
First Way:
You didn't create the directory. Also, you are passing an absolute path to openFileOutput()
, which is wrong.
Second way:
You created an empty file with the desired name, which then prevented you from creating the directory. Also, you are passing an absolute path to openFileOutput()
, which is wrong.
Third way:
You didn't create the directory. Also, you are passing an absolute path to openFileOutput()
, which is wrong.
Fourth Way:
You didn't create the directory. Also, you are passing an absolute path to openFileOutput()
, which is wrong.
Fifth way:
You didn't create the directory. Also, you are passing an absolute path to openFileOutput()
, which is wrong.
Correct way:
File
for your desired directory (e.g., File path=new File(getFilesDir(),"myfolder");
)mkdirs()
on that File
to create the directory if it does not existFile
for the output file (e.g., File mypath=new File(path,"myfile.txt");
)File
(e.g., using new BufferedWriter(new FileWriter(mypath))
)If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With