在Android中写入SD卡中的文件

时间:2011-11-18 10:52:31

标签: java android eclipse file-io

我在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上

5 个答案:

答案 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" />