为什么我的代码不写入文本文件?

时间:2015-09-21 07:14:37

标签: java file text-files filewriter bufferedwriter

我想知道为什么我的代码没有写入文本文件,JVM不会抛出任何异常......

public class AlterData {

    Data[] information; 
    File informationFile = new File("/Users/RamanSB/Documents/JavaFiles/Information.txt");
    FileWriter fw;

    public void populateData(){
        information = new Data[3];

        information[0] = new Data("Big Chuckzino", "Custom House", 18);
        information[1] = new Data("Rodger Penrose", "14 Winston Lane", 19);
        information[2] = new Data("Jermaine Cole", "32 Forest Hill Drive", 30);
    }

    public void writeToFile(Data[] rawData){
        try{    
        fw = new FileWriter(informationFile);
        BufferedWriter bw = new BufferedWriter(fw);
        for(Data people : rawData){ 
            bw.write(people.getName()+ ", ");
            bw.write(people.getAddress() + ", ");
            bw.write(people.getAge() +", |");
            }
        }catch(IOException ex){
            ex.printStackTrace();
        }
    }

    public static void main(String[] args){
            AlterData a1 = new AlterData();
            a1.populateData();
            a1.writeToFile(a1.information); 
    }
}

3 个答案:

答案 0 :(得分:2)

您应该为close实例调用flushBufferedWriter,以便将数据刷新到文件中。无论如何,关闭你正在使用的任何资源都很重要。

答案 1 :(得分:2)

尝试在写入数据后调用bw.flush(),然后在刷新后必须用bw.close()关闭流。

关闭BufferedWriter时,最好将close语句放入finally块中,以确保流被关闭,无论如何。

您还应该考虑使用try with resource。这样可以使用AutoCloseable的{​​{1}}功能,如下所示:

BufferedWriter

这样,无论发生什么情况,java都会确保在离开try主体时关闭流。

答案 2 :(得分:0)

你需要确保,我们需要flush()来将更改推送到文件, 还要确保关闭文件资源:

public void writeToFile(Data[] rawData){
        BufferedWriter bw = null;
        try{    
        fw = new FileWriter(informationFile);
        bw = new BufferedWriter(fw);
        for(Data people : rawData){ 
            bw.write(people.getName()+ ", ");
            bw.write(people.getAddress() + ", ");
            bw.write(people.getAge() +", |");
            }
        }catch(IOException ex){
            ex.printStackTrace();
        } finally {
               if(fw  != null) {
                     fw.close();
                     fw = null;
               }
               if(bw  != null) {
                     bw.close();
                     bw = null;
               }
        }
    }