有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

导出为Java中的CSV文件

我正在尝试使用CSV导出数据。我不是一个高级程序员,所以在帮助别人的时候最好记住这一点;)

我很困惑为什么它拒绝我的访问,也不知道如何修复它

package Testing;

import java.io.FileWriter;
import java.io.IOException;

public class Testing
{
   public static void main(String [] args)
   {
       generateCsvFile("c:\\test.csv"); 
   }

   private static void generateCsvFile(String sFileName)
   { 
    try
    {
        FileWriter writer = new FileWriter(sFileName);

        writer.append("DisplayName");
        writer.append(',');
        writer.append("Age");
        writer.append('\n');

        writer.append("MKYONG");
        writer.append(',');
        writer.append("26");
            writer.append('\n');

        writer.append("YOUR NAME");
        writer.append(',');
        writer.append("29");
        writer.append('\n');

        writer.flush();
        writer.close();
    }
    catch(IOException e)
    {
         e.printStackTrace();
    } 
    }
}

我得到了一个衰减错误:

java.io.FileNotFoundException: c:\test.csv (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at Testing.Testing.generateCsvFile(Testing.java:17)
at Testing.Testing.main(Testing.java:10)

感谢所有能帮忙的人


共 (2) 个答案

  1. # 1 楼答案

    此访问被拒绝消息是从操作系统发送到Java的。因此,操作系统不允许java程序访问该文件。这可能是因为多种原因,包括

    • 运行java程序的用户无权访问C:\
    • 运行java程序的用户无权访问C:\test.csv
    • test.csv正在从另一个程序编辑

    首先,我会将文件写入当前目录(程序运行的地方)或用户主页(Win 7+上的^{)。用户主页可以通过System.getProperty("user.home")通过编程获得

    而且,C:\只存在于Windows上,所以硬编码这不是一个好主意。使用user.home属性或外部化文件位置(从属性文件中获取文件名。通过这种方式,您可以更改不同操作系统的位置)

  2. # 2 楼答案

    由于权限问题,您通常无法在rootC:\文件夹中写入/创建文件

    尽管你可以随意在主目录中写入/创建文件。以下解决方案应该可以跨操作系统工作

    generateCsvFile(System.getProperty("user.home") + "test.csv"); 
    

    你也可以写信到你的temp文件夹

    generateCsvFile(System.getProperty("java.io.tmpdir") + "test.csv"); 
    

    如果要在根目录中创建文件,请按照以下说明操作 http://www.mkyong.com/computer-tips/cant-create-file-in-the-c-drive-root-directory-windows-8/

    免责声明,无法测试,因为我没有Windows 8