Я пытаюсь экспортировать данные с помощью 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)
Спасибо всем, кто мог бы помочь.
Это сообщение об отказе доступа от операционной системы к Java. Таким образом, для доступа к этому файлу java-программа не разрешена (операционной системой). Это может быть связано с несколькими причинами, в том числе
C:\
C:\test.csv
test.csv
редактируется из другой программы. Я начну с написания файла в текущем каталоге (откуда выполняется программа) или в домашнем пользователе (который является C:\users\userName\AppData
при Win 7+). Пользовательский дом может быть запрограммирован System.getProperty("user.home")
Кроме того, C:\
существует только в Windows, поэтому hardcoding это не очень хорошая идея. Используйте свойство user.home
или внешнее расположение файла (получите имя файла из файла свойств. Таким образом, вы можете изменить местоположение для разных операционных систем)
Обычно вы не можете писать/создавать файлы в корневой папке 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.
user.home