导出为Java中的CSV文件

导出为Java中的CSV文件,java,csv,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.cs

我正在尝试使用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)

感谢所有能够提供帮助的人。

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

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

generateCsvFile(System.getProperty("user.home") + "test.csv"); 
你也可以写你的临时文件夹

如果要在根目录中创建文件,请按照以下说明操作


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

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

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

generateCsvFile(System.getProperty("user.home") + "test.csv"); 
你也可以写你的临时文件夹

如果要在根目录中创建文件,请按照以下说明操作


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

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

运行java程序的用户无权访问C:\ 运行java程序的用户无权访问C:\test.csv 正在从另一个程序编辑test.csv。 首先,我会将文件写入运行程序的当前目录,或者写入用户主页,即Win7+上的C:\users\userName\AppData。可以通过System.getPropertyuser.home以编程方式获取用户主页


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

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

运行java程序的用户无权访问C:\ 运行java程序的用户无权访问C:\test.csv 正在从另一个程序编辑test.csv。 首先,我会将文件写入运行程序的当前目录,或者写入用户主页,即Win7+上的C:\users\userName\AppData。可以通过System.getPropertyuser.home以编程方式获取用户主页


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

用于运行程序的用户无权访问该文件。您使用的是Windows操作系统吗?是的,我使用的是Windows 8。如果您必须使用此位置写入文件,请更改您正在使用的用户在C:上的读/写权限。您用于运行程序的用户无权访问该文件。您使用的是Windows操作系统吗?是的,我使用的是Windows 8。如果您必须使用此位置来写入文件,请更改您正在使用的用户在C:上的读/写权限。我想您指的是user.home。我没有投反对票,但我不认为这个答案是错误的。我刚刚尝试过这个,控制台中没有任何内容,但没有错误。请尝试添加/字符。要创建文件路径,请生成ecsvfilesystem.getPropertyuser.home+System.getPropertyfile.separator+test.csv;答案并没有错,但答案建议了一种替代方法,而不是解决根本原因。理想情况下,如果有人必须使用C:\,则需要修复权限。我想你指的是user.home。我没有否决投票,但我不认为这个答案是错误的。我刚刚尝试过这个方法,虽然控制台中没有任何内容,但没有错误。请尝试添加/字符。要创建文件路径,请生成ecsvfilesystem.getPropertyuser.home+System.getPropertyfile.separator+test.csv;答案并没有错,但答案建议了一种替代方法,而不是解决根本原因。理想情况下,如果有人必须使用C:\,则需要修改权限。