【问题标题】:How do I write a byte array to a file in Android?如何将字节数组写入 Android 中的文件?
【发布时间】:2012-04-10 07:29:33
【问题描述】:

这是我创建文件的代码。

public void writeToFile(byte[] array) 
{ 
    try 
    { 
        String path = "/data/data/lalallalaa.txt"; 
        FileOutputStream stream = new FileOutputStream(path); 
        stream.write(array); 
    } catch (FileNotFoundException e1) 
    { 
        e1.printStackTrace(); 
    } 
} 

当我尝试通过调用路径 String path = "/data/data/lalallalaa.txt"; 将文件发送到服务器时

我收到此 logcat 错误消息:

03-26 18:59:37.205: W/System.err(325): java.io.FileNotFoundException: /data/data/lalallalaa.txt

我不明白为什么它找不到“应该”已经创建的文件。

【问题讨论】:

  • 之后别忘了关闭流

标签: java android file bytearray logcat


【解决方案1】:

我认为你最好添加 FileOutputStream 的关闭功能以获得清晰的代码

它对我很有效

try {
    if (!file.exists()) {
        file.createNewFile();
    }
    FileOutputStream fos = new FileOutputStream(file);
    fos.write(bytes);
    fos.close();
} catch (Exception e) {
    Log.e(TAG, e.getMessage());
}

【讨论】:

    【解决方案2】:

    你确定文件已经创建了吗?

    尝试添加这个:

    File file = new File(path);
    if (!file.exists()) {
      file.createNewFile();
    }
    

    【讨论】:

    • 是的,这是正确的。我实际上并没有创建一个新文件。不知道那个方法,也不知道有必要。谢谢
    【解决方案3】:

    /data/data/ 是 Android 中的特权目录。应用程序无法写入此目录或从中读取。

    相反,您应该使用context.getFilesDir() 来查找要使用的有效文件名。

    【讨论】:

      【解决方案4】:

      如果文件不存在或您尝试写入只读文件,则会引发此异常。还可以尝试使用完整路径名,看看是否发生相同的异常(检查您是否提供了正确的相对路径)。

      【讨论】:

        猜你喜欢
        • 2010-12-18
        • 2014-04-10
        • 2014-01-12
        • 2016-07-05
        • 1970-01-01
        • 2019-02-07
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        相关资源
        最近更新 更多