无法在csv文件中写入数据

时间:2017-02-09 14:27:50

标签: java apache csv csv-write-stream

我是java的初学者,我尝试使用apache.poi库在csv文件中写入数据。但是csvPrinter无法在csv文件中写入数据。

URL dir = getClass().getClassLoader().getResource("csv/input.csv");
File file = new File(dir.getFile());
FileWriter fileWriter = new FileWriter(file);
CSVPrinter csvPrinter = new CSVPrinter(fileWriter, csvFileFormat);
CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(",");
csvPrinter.print(data);

修改

这是代码。

FileWriter fileWriter = null;
    CSVPrinter csvPrinter = null;
    CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(",");
    Logger logger = LoggerFactory.getLogger(this.getClass());

    {
        try{
            URL dir = getClass().getClassLoader().getResource("csv/input.csv");
            File file = new File(dir.getFile());
            fileWriter = new FileWriter(file);
            csvPrinter = new CSVPrinter(fileWriter, csvFileFormat);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }

    @Override
    public void write(List<? extends String[]> messages) throws Exception {

        String[] data = messages.iterator().next();
        csvPrinter.print(data);
        for (String singleData : data) {
            System.out.println(singleData);
        }
//      csvwriter.close();
    }

1 个答案:

答案 0 :(得分:0)

你必须要poi吗?如果不试试这个。

public static void main(String[] args) {
        // TODO code application logic here\\

        Random random = new Random();
        StringBuilder stringbuilder = new StringBuilder();

        //make random data file
        for(int i = 1; i <= 100; i++)
        {
            stringbuilder.append(random.nextInt(10000) + 1).append(",");//append data and comma
            if(i % 10 == 0)
            {
                stringbuilder.append("\r\n");//add new line at end of one line of data
            }
        }

        //creat the file that the data will be written to
        File file = new File("results.csv");

        //write the string data to file
        try(FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw))
        {           
            bw.write(stringbuilder.toString());
        }
        catch (IOException ex)
        {
            System.out.println("Something went wrong!");
        }


        //open the file with your default program
        try 
        {
            Desktop.getDesktop().open(file);
        } 
        catch (IOException ex) {
            Logger.getLogger(Writecvsfile.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Can't open file!");
        }
    }