Java将新列附加到csv文件

我想计算一些列数据并将其作为列写入csv文件。 然后在计算其他数据列后,我想将它附加到同一个文件但作为新列。

这是我做的:

 try { FileWriter writer = new FileWriter(OUT_FILE_PATH, true); for (int i=0; i<data.size(); i++) { writer.append(String.valueOf(data.get(i))); writer.append(","); writer.append("\n"); } writer.flush(); writer.close(); } catch (Exception e) {} 

结果 – 它将新列附加到第一列下方,因此我有一个长列。

谢谢,

您必须逐行读取文件,然后将新列插入每一行。 这是使用BufferedReader和BufferedWriter的解决方案

 public void addColumn(String path,String fileName) throws IOException{ BufferedReader br=null; BufferedWriter bw=null; final String lineSep=System.getProperty("line.separator"); try { File file = new File(path, fileName); File file2 = new File(path, fileName+".1");//so the //names don't conflict or just use different folders br = new BufferedReader(new InputStreamReader(new FileInputStream(file))) ; bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2))); String line = null; int i=0; for ( line = br.readLine(); line != null; line = br.readLine(),i++) { String addedColumn = String.valueOf(data.get(i)); bw.write(line+addedColumn+lineSep); } }catch(Exception e){ System.out.println(e); }finally { if(br!=null) br.close(); if(bw!=null) bw.close(); } } 

也许这样的事情:

 public void appendCol(String fileName, ???ArrayList??? data) { //assuming data is of type ArrayList here, you need to be more explicit when posting code String lineSep = System.getProperty("line.separator"); String output = ""; try{ BufferedReader br = new BufferedReader(new FileReader(fileName)); String line = null; int i = 0; while ((line = br.readLine()) != null) { output += line.replace( lineSep, "," + String.valueOf(data.get(i)) + lineSep); i++; } br.close(); FileWriter fw = new FileWriter(fileName, false); //false to replace file contents, your code has true for append to file contents fw.write(output); fw.flush(); fw.close(); } catch (Exception e){ e.printStackTrace(); } } 

希望这会帮助你。

 { //CREATE CSV FILE StringBuffer csvReport = new StringBuffer(); csvReport.append("header1,Header2,Header3\n"); csvReport.append(value1 + "," + value2 + "," + value3 + "\n"); generateCSVFile( filepath,fileName, csvReport); // Call the implemented mathod } public void generateCSVFile(String filepath,String fileName,StringBuffer result) { try{ FileOutputStream fop = new FileOutputStream(filepath); // get the content in bytes byte[] contentInBytes = result.toString().getBytes(); fop.write(contentInBytes); fop.flush(); //wb.write(fileOut); if(fop != null) fop.close(); }catch (Exception ex) { ex.printStackTrace(); } }