Экспорт в файл CSV на Java

1

Я пытаюсь экспортировать данные с помощью 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
    Пользователь, которого вы используете для запуска программы, не имеет доступа к файлу. Вы используете операционную систему Windows?
  • 0
    Да, я использую Windows 8.
Показать ещё 1 комментарий
Теги:
csv

2 ответа

2
Лучший ответ

Это сообщение об отказе доступа от операционной системы к Java. Таким образом, для доступа к этому файлу java-программа не разрешена (операционной системой). Это может быть связано с несколькими причинами, в том числе

  • Пользователь, запускающий java-программу, не имеет доступа к C:\
  • Пользователь, запускающий java-программу, не имеет доступа к C:\test.csv
  • test.csv редактируется из другой программы.

Я начну с написания файла в текущем каталоге (откуда выполняется программа) или в домашнем пользователе (который является C:\users\userName\AppData при Win 7+). Пользовательский дом может быть запрограммирован System.getProperty("user.home")

Кроме того, C:\ существует только в Windows, поэтому hardcoding это не очень хорошая идея. Используйте свойство user.home или внешнее расположение файла (получите имя файла из файла свойств. Таким образом, вы можете изменить местоположение для разных операционных систем)

2

Обычно вы не можете писать/создавать файлы в корневой папке C:\ из-за проблем с разрешениями.

Хотя вы можете писать/создавать файлы в своем домашнем каталоге по своему усмотрению. Следующее решение должно работать в разных операционных системах.

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

Yo также может писать в вашу 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/

Отказ от ответственности, не может протестировать, так как у меня нет Windows8.

  • 1
    Я думаю, что вы имели в виду user.home
  • 0
    Ошибка копирования / вставки, фиксированная запись, пожалуйста, обновите голосование?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню