为什么FileWriter没有写入“output.csv”,而是写入确切的路径“C:\\ path \\ output.csv”?

时间:2013-07-02 17:32:59

标签: java file filewriter

没有抛出任何错误。如果我指定确切的路径,它将起作用,但如果我只说“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);
                }

2 个答案:

答案 0 :(得分:5)

如果你只是说output.csv它应该写入工作目录,这通常是你从Java启动的目录,但这可能会有所不同,具体取决于你是否从IDE开始。

你可以通过以下方式检查它正在使用的实际文件:

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

答案 1 :(得分: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);
   }

  }
}

如果你喜欢这个代码,请给我评论,或者它有助于你的目的......