2014-04-23 88 views
1

我正在嘗試使用CSV導出數據。我不是一個先進的編碼器,所以它會很好記住,同時幫助;)以Java導出爲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操作系統? – Amit

+0

是的,我正在使用Windows 8. –

+0

如果您絕對必須使用此位置來寫入文件,請在您使用的用戶的C:上更改讀取/寫入權限。 – Amit

回答

2

此訪問被拒絕的消息是從操作系統到Java。所以,Java程序不被允許(通過操作系統)來訪問該文件。這可能是由於多種原因,包括

  • 用戶運行Java程序不訪問C:\
  • 運行Java程序不訪問C:\test.csv
  • test.csv用戶正在從編輯另一個程序。

我會從將文件寫入當前目錄(從運行程序的位置)或用戶主目錄(即Win 7+上的C:\users\userName\AppData)開始。用戶主頁可以通過編程獲得System.getProperty("user.home")

此外,C:\只存在於Windows上,所以硬編碼這不是一個好主意。使用user.home屬性或外部化文件位置(從屬性文件獲取文件名。這樣,您可以更改不同操作系統的位置)

2

由於權限問題,您通常無法在根文件夾C:\中寫入/創建文件。

儘管您可以隨意在主目錄中編寫/創建文件。以下解決方案應該可以跨操作系統使用。

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/

聲明,無法測試,因爲我沒有的Windows8。

+1

我想你的意思是'user.home' – Nivas

+0

複製/粘貼失敗,修復後,請更新投票? – cevaris

+1

我沒有downvote,但我不認爲這個答案是「錯誤的」。 – Nivas