当前位置: 首页 > 知识库问答 >
问题:

如何使用Android在CSV中保存SQLite表

窦啸
2023-03-14

我正在尝试导出一些SQLite表数据。我正在获取IOException:/TestFileExport0719a.csv:open失败:EROFS(只读文件系统

 Boolean returnCode = false;
        int i = 0;
        String csvValues = "";

        dbadapter = new DBAdapter(this);
        dbadapter.open();
        try {
            File outFile = new File(outFileName);
            FileWriter fileWriter = new FileWriter(outFile);
            BufferedWriter out = new BufferedWriter(fileWriter);
            Cursor cursor = dbadapter.getAllSkus();
            if (cursor != null) {
                   while (cursor.moveToNext()) {

                     csvValues = Long.toString(cursor.getLong(0)) + ",";
                        csvValues += cursor.getString(1)
                                + ",";
                        csvValues +=  cursor.getString(2)
                                + "\n";

                            out.write(csvValues);

                    }
                cursor.close();
            }
            out.close();
            returnCode = true;
        } catch (IOException e) {
            returnCode = false;
            Log.d(TAG, "IOException: " + e.getMessage());
        }
        dbadapter.close();
        return returnCode;

更改后出现以下错误:

File outFile=新文件(environment.getExternalStoragePublicDirectory(environment.directory_downloads),outFileName);

07-20 18:31:07.595:d/BackupCSV(1580):IOException:/Storage/Emulated/0/Download/TestFileExport0719A.CSV:open失败:EACCES(拒绝权限)

编辑-

在清单中添加权限修复了该问题。

谢谢你的帮助。

共有1个答案

华景焕
2023-03-14

以后,请发布整个堆栈跟踪。

假设outfilenametestfileexport0719a.csv,则这是一个无效路径。您需要写入内部存储(例如,GetFilesDir())或外部存储(例如,GetExternalFilesDir())的您的部分。

由于这是一个导出操作,我会假设您希望写入外部存储,因此用户可以独立访问CSV文件。在这种情况下,更改:

File outFile = new File(outFileName);
File outFile = new File(getExternalFilesDir(), outFileName);

或:

File outFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), outFileName);

或者类似的东西。

 类似资料:
  • 问题内容: 我是Android编程的新手,我想找到如何将json中的数据存储在android的sqlite中。我没有在互联网上找到任何有用的示例,这就是为什么我在这里问。如果您向我展示一个简单的举个例子,我会很高兴。非常感谢! 问题答案: 创建一个具有JSON模型属性的模型类。 在您的模型中创建一个接受(搜索Android开发人员参考)的构造函数。 在构造函数中,使用方法和读取属性的值。 您也可以

  • 我有创建csv文件的asp页面。问题是这个csv文件是作为UTF-8创建的,没有BOM,当我打开它时,一些标志不正确可见。我应该更改什么才能将其保存为UTF-8 with BOM?如果我在记事本中手动将其转换为UTF-8 With BOM,它就可以工作。 谢谢

  • 问题内容: 这是新的Android Q 范围存储的链接。 根据此Android开发者最佳实践博客,(这是我的情况)应使用MediaStore API完成。 深入研究文档,我找不到相关功能。 这是我在科特林的审判: 结果是,按照最佳做法博客中的描述,我的图像保存在此处为 我的问题是: 如何使用MediaStore API保存图像? 用Java回答同样可以接受。 提前致谢! 编辑 感谢PerracoL

  • 根据这篇Android开发人员最佳实践博客,(我就是这样)应该使用MediaStore API。 在文档中挖掘,我找不到相关的函数。 这是我在科特林的审判: 提前感谢! 编辑 多亏了PerracoLabs 图像总是得到一个由数字组成的名称,如下所示: 这就给我们带来了第二个问题: 更改为: 这是原木 我注意到与名称匹配,所以我尝试添加:

  • 我已经实现了下面的脚本,但无法保存相同的UTF-8格式。 如何保存转换的CSV从Excel在UTF-8 CSV格式使用VBScript?

  • 我正在尝试将包含文本信息的文件保存为csv格式。但是,在熊猫中使用“to_csv”(不指定任何内容)后,保存文件,然后使用pd。读取csv以重新打开文件。它将向我显示以下错误消息: 但是如果我读熊猫的csv文件pd.read_csv('file.csv',lineterminator='\n')。它将正确打开文件。 然而,我需要使用一个软件来处理这些文本文件,软件打开文件的方式与Excel打开cs