无法使用BufferedWriter写入csv文件

时间:2016-11-20 07:07:58

标签: csv servlets

我正在尝试使用下面的代码在我的csv文件末尾添加一行

public class Register {
public static void add(int k,int m,int id1) throws Exception

{

    ClassLoader classLoader = Register.class.getClassLoader();

    try{
        FileWriter fw = new FileWriter(new File(classLoader.getResource("data/dataset.csv").getFile()),true);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.append("\n");
        bw.append(String.valueOf(id1));
        bw.append(',');
        bw.append(String.valueOf(m));
        bw.append(',');
        bw.append(String.valueOf(k));
        bw.close();



      }catch(IOException ioe){
         System.out.println("Exception occurred:");
         ioe.printStackTrace();
       }

    }
 }

我使用循环从servlet调用此类,因为我需要向csv添加5行。一切运行正常,但没有任何东西被添加到csv文件。请帮忙。

1 个答案:

答案 0 :(得分:0)

您需要close FileWriter个对象将内容刷新到文件中,如下所示:

   FileWriter fw = null;
   BufferedWriter bw = null;
   try{
        fw = new FileWriter(new File(classLoader.
                 getResource("data/dataset.csv").getFile()),true);
        bw = new BufferedWriter(fw);
        bw.append("\n");
        bw.append(String.valueOf(id1));
        bw.append(',');
        bw.append(String.valueOf(m));
        bw.append(',');
        bw.append(String.valueOf(k));
        bw.close();
     }catch(IOException ioe){
         System.out.println("Exception occurred:");
         ioe.printStackTrace();
       } finally {
           if(bw != null) {
                bw.close();
            }
            if(fw != null) {
                fw.close();
            }
     }

作为旁注,请确保您正在关闭finally块中的资源(如上面的编写器对象)(您没有这样做)。