【问题标题】:Impossibility to create CSV file in Android, always fails无法在 Android 中创建 CSV 文件,总是失败
【发布时间】:2017-10-07 17:56:40
【问题描述】:

我知道有关 stackoverflow 的一些主题,但我找不到任何可以解决我的问题的主题。

我已成功实施(经过测试)SharedPreferences 来保存我的应用程序数据,我现在的目标是将这些数据导出到 CSV 文件。

这就是我想要做的:

public void saveCSVFile(List<PessoaClass> data) { 
    PrintWriter writer;
    String strFilePath = "C:\\users\\ricardo\\desktop\\testesCSV\\pessoas.csv";
    try {
        File file = new File(strFilePath);
        if(!file.exists())
            file = new File(strFilePath);

        writer = new  PrintWriter(new FileWriter(file,true));

        for(int i = 0; i < data.size(); i++ ){
            writer.print(data.get(i).getAge());
            writer.print(data.get(i).getSex());             
            writer.print(data.get(i).getName());
            writer.print(data.get(i).getEmail());
            writer.print("\r\n");
        }
        writer.close();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

我一直遇到的错误“java.io.FileNotFoundException: C:\users\ricardo\desktop\testesCSV\pessoas.csv(只读文件系统)”

为了使用 CSVWriter 库进行测试,我还尝试了以下示例代码:

public void saveCSVFile() {
    String csv = "C:\\users\\ricardo\\desktop\\testesCSV\\pessoas.csv";
    try {
        CSVWriter writer = new CSVWriter(new FileWriter(csv));
        List<String[]> imprimir = new ArrayList<>();

        imprimir.add(new String[]{"India", "New Delhi"});
        imprimir.add(new String[]{"United States", "Washington D.C"});
        imprimir.add(new String[]{"Germany", "Berlin"});

        writer.writeAll(imprimir);
        writer.close();
    }

    catch(IOException e){
        e.printStackTrace();
    }
}

错误是一样的。 我尝试以管理员身份运行 Android Studio - 没有成功。

我不明白错误是什么,因为我正在尝试写入我的个人计算机桌面,而不是像网站中的其他一些用户那样写入没有 root 权限的应用程序/应用程序。

此应用旨在在非 root 设备中运行。

感谢任何帮助!

【问题讨论】:

  • Android 没有“桌面”。每个应用都在自己的沙盒中运行。

标签: java android csv export-to-excel export-to-csv


【解决方案1】:

"java.io.FileNotFoundException:

C:\users\ricardo\desktop\testesCSV\pessoas.csv(只读文件系统)"

这是您的 Windows 计算机上的路径。在 C: 分区上。但是您的应用在 Android 设备上运行,并且无法访问您计算机上的文件。

改为使用

File file = new File(getExternalFilesDir(null), "pessoas.csv");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2019-02-21
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多