我在Android中尝试了一个简单的文件写入程序。
try
{
//File f1=new File("/sdcard/Prag.txt");
File f1=new File("J:\\Prag.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(f1,true));
out.write("Pragadheesh" + "\n");
out.close();
} catch (IOException ioe)
{ioe.printStackTrace();}
但异常正在受到打击。我该如何解决这个问题?
[编辑]:
我试过File f1=new File(Environment.getExternalStorageDirectory() + "//Prag.txt");
和f1值= /mnt/sdcard/Prag.txt
但仍有异常受到打击。我在清单文件中也更改了权限
[溶液] 根据Krishnabhadra的回复,我必须确保您的SD卡没有安装在PC上
答案 0 :(得分:8)
Android基于Linux,因此像"J:\\prag.txt"
这样的Windows样式路径不起作用。在linux中,路径是这样的:"/folder1/folder2/file.txt"
也不要使用硬编码路径,因为不同的手机可能有不同的SD卡路径。因此,您应该使用Environment.getExternalStorageDirectory()
以编程方式提供SD卡的路径。
所以使用:
File f1=new File(Environment.getExternalStorageDirectory() + "Prag.txt");
还可以通过以下方式添加必要的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在您的清单中,application
标记之外的某个地方。
答案 1 :(得分:3)
以上所有答案都很有用..但还记得一件事......确保您的SD卡没有安装在PC上。一次只能有一台设备可以访问SDCard。即计算机或手机可以访问SD卡,但不能同时访问两者。如果它安装在PC上,那么你的代码将无法工作。参见this线程
答案 2 :(得分:2)
替换:
File f1=new File("J:\\Prag.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(f1,true));
使用:
BufferedWriter out = new BufferedWriter(new FileWriter(Environment.getExternalStorageDirectory(),"prag.txt"))
答案 3 :(得分:1)
您是否在清单中设置了所需的权限?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 4 :(得分:1)
这条路是什么“J:\ Prag.txt”; Android doesn't recognize any drive path like system
。
使用sdcard路径。
File f1=new File(Environment.getExternalStorageDirectory()+"/Prag.txt");
还要提及清单文件中的权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />