繁体   English   中英

Android将文件保存到内部存储器有效,而到SD卡失败

[英]Android Saving a file to internal memory works while to Sd card fails

我有一个Android应用程序,需要在其中保存文件。 我创建如下文件:

FileOutputStream fOut = openFileOutput(fileName, 
                    MODE_WORLD_READABLE);
            osw = new OutputStreamWriter(fOut);

我像这样打开它:

FileInputStream srcFileStream = openFileInput(fileName);

这对于内部存储器文件可以正常工作。 我在我的应用程序中添加了一个首选项,用户可以在其中选择将文件保存到sd卡中。 我尝试以下命令:

if (Prefs.getCard(this))
        fileName="/sdcard/"+fileName;

这意味着如果Prefrences为yes,则在文件名的前面添加“ / sdcard /”。 其余代码保持不变,

这似乎不起作用,因为出现异常:

File /sd/file1 contains a path seperator

我如何才能使用相同的代码将其保存到SD卡和内部存储器中,并进行如上尝试的少量修改?

您当然不会忘记在清单中添加正确的权限...

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您也可以尝试使用以下方法访问外部路径:

Environment.getExternalStorageDirectory();

我已经看到了不同的外部路径名,具体取决于设备。

这应该工作..

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

编辑被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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM