在Android中使用SD卡写入文件

问题描述:

我在Android中尝试了一个简单的文件写入程序。在Android中使用SD卡写入文件

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

发布错误日志.. – user370305

Android是基于Linux所以windows风格的路径一样"J:\\prag.txt"将无法工作。在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

+0

I试过File f1 = new File(Environment.getExternalStorageDirectory()+“//Prag.txt”);并且f1值= /mnt/sdcard/Prag.txt但是仍然发生异常。我已经在清单文件中更改了权限 – SyncMaster

+0

这个异常说的是什么?(在stacktrace后也是) – Caner

您是否在清单中设置了必需的权限?

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

这是什么路 “j:\ Prag.txt”; Android doesn't recognize any drive path like system

使用它的SD卡路径。

File f1=new File(Environment.getExternalStorageDirectory()+"/Prag.txt"); 

也在清单文件中提及权限。

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

我试过文件f1 = new File(Environment.getExternalStorageDirectory()+“//Prag.txt”);并且f1值= /mnt/sdcard/Prag.txt但是仍然发生异常。我已经在清单文件 – SyncMaster

+0

中更改了许可权,这是例外情况吗?发布错误日志。 – user370305

+0

根据Krishnabhadra的回复,我不得不确保你的SD卡没有安装在PC上 – SyncMaster

替换:

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")) 

以上所有的答案都useful..But记得一个更thing..Make确保您的SD卡没有安装在PC上。一次只能有一个设备访问SDCard。即计算机或手机都可以访问SD卡,但不能同时访问。如果它安装在PC上,那么您的代码将无法工作。请参阅this线程