写入原始文件时出现 FileNotFoundException

Posted

技术标签:

【中文标题】写入原始文件时出现 FileNotFoundException【英文标题】:FileNotFoundException when writing to raw file 【发布时间】:2015-06-22 19:16:10 【问题描述】:

我正在尝试写入文件“numbers.txt”。它位于原始文件夹中。 我正在使用此函数写入文件:

public void writeToFile(String data) 
    try 
        Uri url = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.numbers);
        String Path = url.toString();
        File f = new File(Path);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(f));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    
    catch (IOException e) 
        Log.e("Exception", "File write failed: " + e.toString());
    

当我运行该函数时,日志显示:

文件写入失败:java.io.FileNotFoundException:android.resource:/com.sakt.emergencymessage/2131099648:打开失败:ENOENT(没有这样的文件或目录)

但文件存在,我可以从中读取。 是的,我已经在 Manifest 中写了权限 WRITE_EXTERNAL_STORAGE。 感谢您的帮助。

【问题讨论】:

【参考方案1】:

您无法写入资源文件。它们是只读的。

【讨论】:

谢谢,我有没有在我的项目中包含一个文件并写入它? @Simas @SAKT 没有。您需要先将其复制到内部/外部存储。最好是您的应用程序的数据文件夹。【参考方案2】:

您需要使用设备上的外部存储。您不能也不应该写入资源。而是将资源复制到外部存储,然后在那里修改。

【讨论】:

以上是关于写入原始文件时出现 FileNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

将 pandas df 写入 csv 时出现 Unicode 编码错误

写入文本文件时出现“文件正在使用”错误

尝试写入文件时出现 FileNotFound 异常

为啥将聚合数据帧写入文件接收器时出现异常?

尝试在 HD 上写入文件时出现“(只读文件系统)”

快速写入 JSON 文件时出现意外错误