【问题标题】:Write to a file in SD Card in Android在 Android 中写入 SD 卡中的文件
【发布时间】:2011-11-18 10:52:31
【问题描述】:

我在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 的回复,我必须确保您的 SDCard 没有安装在 PC 上

【问题讨论】:

    标签: java android eclipse file-io


    【解决方案1】:

    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 标记之外的某个地方。

    【讨论】:

    • 我试过 File f1=new File(Environment.getExternalStorageDirectory() + "//Prag.txt");和 f1 值 = /mnt/sdcard/Prag.txt 但仍然遇到异常。我也在清单文件中更改了权限
    • 异常说明了什么?(也发布堆栈跟踪)
    【解决方案2】:

    以上所有答案都很有用..但请记住一件事..确保您的 SDCard 未安装在 PC 上。一次只能有一台设备访问 SDCard。即电脑或手机都可以访问SD卡,但不能同时访问。如果它安装在PC上,那么你的代码将无法工作..见this线程

    【讨论】:

      【解决方案3】:

      替换:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          这个路径是什么 "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" />
          

          【讨论】:

          • 我试过 File f1=new File(Environment.getExternalStorageDirectory() + "//Prag.txt");和 f1 值 = /mnt/sdcard/Prag.txt 但仍然遇到异常。我也在清单文件中更改了权限
          • 根据 Krishnabhadra 的回复,我必须确保您的 SDCard 未安装在 PC 上
          • 但是如果您发布错误日志,那么我们很容易找出这里出了什么问题。真正的问题是什么?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多