2013-07-02 51 views
1

沒有錯誤拋出。如果我指定的確切路徑但如果我只是說「output.csv」爲什麼FileWriter不寫入「output.csv」,而是寫入確切路徑「C:\ path \ output.csv」?

ResultSet rs = statement.executeQuery("select * from geninfo"); 
       try { 
        CSVWriter writer = new CSVWriter(new FileWriter(new File("output.csv"))); 
        writer.writeAll(rs, true); 
        writer.flush(); 
        writer.close(); 
       } catch (IOException ex) { 
        Logger.getLogger(SQLite.class.getName()).log(Level.SEVERE, null, ex); 
       } 
+0

凡位於與關係的類文件output.csv文件? – Tdorno

+0

不指定根路徑,它可能會嘗試寫入您可能沒有權限的JAVA_HOME目錄。情況會是這樣嗎? –

+0

@Tdorno它在項目文件夾以及我的構建和源文件夾中 – jeanqueq

回答

5

它將工作如果你只是說output.csv應該寫入工作目錄,通常是你開始的Java目錄來自,但可以根據您是否從IDE啓動而有所不同。

您可以檢查它的使用雖然與實際文件:

new File("output.csv").getAbsolutePath() 
+0

有趣的是,它正在我的tomcat服務器的bin文件夾中創建。謝謝你的提示。 – jeanqueq

0

這裏是一個完整的解決方案:這個執行查詢,然後將結果集的輸出CSV文件。

import java.sql.*; 
import java.io.IOException; 
import java.io.FileWriter;  
import java.io.File; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import au.com.bytecode.opencsv.CSVWriter; 

public class TableExport { 
public static void main(String[] args) { 

    try{ 
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","name","password"); 
    conn.setAutoCommit(false); 
    Statement statement = conn.createStatement(); 
    ResultSet resultData = statement.executeQuery("select * from your_table"); 

       CSVWriter writer = new CSVWriter(new FileWriter(new File("D:/Uploads/Output5.csv")), '|'); 
       writer.writeAll(resultData, true); 
       writer.close(); 

}catch (Exception e){ 
     System.out.println("Error" +e); 
    } 

    } 
} 

請給我,如果你評論這樣的代碼或它可以幫助你的目的.....

相關問題