在android中在外部SD卡中写入文件
我已经尝试了很多方法,以外部卡的形式写入文件,但都不起作用。请建议我怎么做 我编写的代码片段如下所示:在android中在外部SD卡中写入文件,android,android-sdcard,Android,Android Sdcard,我已经尝试了很多方法,以外部卡的形式写入文件,但都不起作用。请建议我怎么做 我编写的代码片段如下所示: final String directoryFile = "file:///"+"mnt/extsd/Test"; String filename = "TextData.txt"; Context context; //String file=Environment.getExternalStorageDirectory()+ "/TextData.txt";
final String directoryFile = "file:///"+"mnt/extsd/Test";
String filename = "TextData.txt";
Context context;
//String file=Environment.getExternalStorageDirectory()+ "/TextData.txt";
//String file = "mnt/extsd/TextData.txt";
//String file=Environment.getExternalStorageDirectory()+ "/RudimentContent/test.txt";
//File root = android.os.Environment.getExternalStorageDirectory();
//File dir = new File (root.getAbsolutePath() + "/download");
//File path = Environment.getExternalStorageDirectory();
//String filename = "TextData.txt";
//String fileName = "TextData.txt";
//String path = "Environment.getExternalStorageDirectory()/TextData.txt";
//File path = Environment.getExternalStorageDirectory();
public void onClick(View v)
{
// write on SD card file data in the text box
// dir.mkdirs();
//File file = new File(dir, "myData.txt");
//String fileName = surveyName + ".csv";
//String headings = "Hello, world!";
//File file = new File(path, fileName);
//path.mkdirs();
//OutputStream os = new FileOutputStream(file);
//os.write(headings.getBytes());
//create path
//create file
//File outFile = new File(Environment.getExternalStorageDirectory(), filename);
//File directoryFile = new File("mnt/extsd", "Test");
//directoryFile.mkdirs();
//create file
//File file = new File(Environment.getExternalStorageDirectory(), filename);
try{
File myFile = new File(directoryFile, filename); //device.txt
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(txtData.getText());
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(),"Done writing SD "+myFile.getPath(),Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
我已经评论过了,所以我也尝试过代码。当我写在内部sd卡,然后它的工作,但不与外部。请建议。只需像这样设置权限
android.permission.WRITE_EXTERNAL_STORAGE
如果您使用的是API级别8或更高版本,请使用getExternalFilesDir()打开一个文件,该文件表示应保存文件的外部存储目录。此方法接受一个类型参数,该参数指定您想要的子目录的类型,例如DIRECTORY_MUSIC和DIRECTORY_RINGTONES(传递null以接收应用程序文件目录的根目录)。 如果需要,此方法将创建适当的目录 如果您使用的是API级别7或更低的版本,请使用getExternalStorageDirectory()打开表示外部存储根目录的文件。然后,应将数据写入以下目录: /Android/data//文件/ 您还必须设置权限: android.permission.WRITE\u EXTERNAL\u STORAGE试试这个
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
并将其添加到清单中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我以前有过这个。
出现此异常的原因是框架处理文件和文件夹的一些奇怪方式
在我的案例中,我正在测试,一切正常,我删除了测试文件夹,从那时起,系统一直试图在删除的文件夹上写入。我从手机上删除了这个项目,重新启动它,然后重新开始工作
此外,我建议您快速阅读此答案和此答案的评论。。。如果你想创建一个好的应用程序,有很多有用的信息。你从流行语中得到的例外是什么?打开失败的eNote(没有这样的文件或目录)。。但是我用astro manager检查了外部sd卡的路径,它以mnt/extsdAll权限开始,我还设置了额外的权限。但仍然不起作用请注意,发送
操作\u媒体\u挂载的意图仅限于Android 4.4上的系统应用程序。见和。
sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));