我正在尝试在外部SD卡文件夹中写入文件。即使在清单文件中设置了所需权限后,我也无法在外部SD卡上写入。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
代码:
String path = "/mnt/extsd/nit.txt";
File myFile = new File(path);
if (!myFile.exists()) {
try {
myFile.createNewFile();
} catch(Exception e)
{
txtText.setText("Failed-" + e.getMessage());
e.printStackTrace();
}
}
try {
FileOutputStream fostream = new FileOutputStream(myFile);
OutputStreamWriter oswriter = new OutputStreamWriter(fostream);
BufferedWriter bwriter = new BufferedWriter(oswriter);
bwriter.write("Hi welcome ");
bwriter.newLine();
bwriter.close();
oswriter.close();
fostream.close();
txtText.setText("success");
} catch(Exception e)
{
txtText.setText("Failed-" + e.getMessage());
e.printStackTrace();
}
另一方面,当我使用ES文件资源管理器并尝试创建文件时,它会创建它而没有任何问题。
答案 0 :(得分:1)
不要使用绝对路径String path = "/mnt/extsd/nit.txt";
,因为您永远不会知道用户使用的Android设备。相反,您可以使用Environment.getExternalStorageDirectory().toString()
获取外部存储目录路径。
答案 1 :(得分:0)
您应该能够调用Environment.getExternalStorageDirectory()来获取SD卡的根路径并使用它来创建FileOutputStream。从那里,只需使用标准的java.io例程。
File log = new File(Environment.getExternalStorageDirectory(), "your_file_name.txt");
try {
out = new BufferedWriter(new FileWriter(log.getAbsolutePath(), false));
out.write("any data");
} catch (Exception e) {
}
不要忘记关闭溪流。
答案 2 :(得分:0)
首先检查SD卡是否可用。
String state = Environment.getExternalStorageState();
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
if (Environment.MEDIA_MOUNTED.equals(state))
{
File folder = folder = new File(extStorageDirectory, "FolderName");
if(!folder.exists())
{
folder.mkdir();//making folder
}
File file = new File(folder,"Filename");//making file
}
请尝试使用此代码,它可以在我的应用程序中使用。