Java append new column to csv file

后端 未结 3 985
旧时难觅i
旧时难觅i 2020-12-16 08:24

I want to calculate some column data and write it to csv file as column. Then after calculating other column of data I want to append it to same file but as new

相关标签:
3条回答
  • 2020-12-16 09:03

    You will have to read your file (line by line) and then insert the new column to every line. Here's a solution using BufferedReader and 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();
        }
    
    }
    
    0 讨论(0)
  • 2020-12-16 09:04

    Something like this perhaps:

    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();
        } 
    }
    
    0 讨论(0)
  • 2020-12-16 09:19

    Hope this will help you.

    {
        //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();
        }
    }
    
    0 讨论(0)
提交回复
热议问题