我有一个Android应用,我需要保存文件。 我创建这样的文件:
FileOutputStream fOut = openFileOutput(fileName,
MODE_WORLD_READABLE);
osw = new OutputStreamWriter(fOut);
我这样打开它:
FileInputStream srcFileStream = openFileInput(fileName);
这适用于内部存储器文件。 我添加了一个prefrences到我的应用程序,用户可以选择将文件保存到SD卡。 我尝试这个命令:
if (Prefs.getCard(this))
fileName="/sdcard/"+fileName;
意思是如果Prefrences为yes,我在文件名的前面添加“/ sdcard /”。 其余代码保持不变,
这似乎不起作用,因为我得到一个例外:
File /sd/file1 contains a path seperator
我如何使用相同的代码同时保存到SD卡和内存,只需稍加修改就像我上面尝试的那样?
答案 0 :(得分:3)
你当然不会忘记在清单中添加正确的权限......
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
您还可以尝试使用以下方式访问外部路径:
Environment.getExternalStorageDirectory();
我已经看到了不同的外部路径名,具体取决于设备......
答案 1 :(得分:2)
这应该有用..
String baseDir = "";
String fileName = "myFile.txt";
FileOutputStream fOut = null;
if (Prefs.getCard(this)) {
baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(baseDir + fileName);
fOut = new FileOutputStream(file)
} else {
fOut = openFileOutput(fileName, MODE_WORLD_READABLE);
}
if (fOut != null) {
osw = new OutputStreamWriter(fOut);
...
}
答案 2 :(得分:0)
编辑被Sevens殴打:
您可以尝试这样的事情:
File f = Environment.getExternalStorageDirectory();
String fullfilename = f.getAbsoluteFile() + "/Android/data/NameOfApp/fileshere/" ;
File folderToWrite = new File(fullfilename);
folderToWrite.mkdirs();
File fileToWrite = new File(fullfilename,"filename.txt");