无法写入文件

时间:2013-04-03 00:01:23

标签: java filewriter printwriter writetofile

好日子,我创建一个程序,将数据写入文本文件。数据来自数组列表,它是从数组列表中解析的数据,例如:

    public double getGincome(){
        gincome=rpd*dwork;
        return gincome;
    }

问题是我无法写入我的txt文件。我的代码写入了数据:

public static boolean payrollWriteToFile(String filename) {
        boolean saved = false;
        PrintWriter pw = null; // pw is a PrintWriter identifier

        try {
            // instantiate pw as PrintWriter, FileWriter
            pw = new PrintWriter(new FileWriter(filename)); 

            try {

                // for each loop. each data from payrolls is 
written to parameter

                for (Person payroll : payrolls) {

                    pw.println(payroll.getName());
                    pw.println(payroll.getGincome());
                    pw.println(payroll.getSss());
                    pw.println(payroll.getPagibig());
                    pw.println(payroll.getPhil());
                    pw.println(payroll.getDeduc());
                    pw.println(payroll.getNincome());


                }
                saved = true;
            } finally {
                pw.close();
            }
        } catch (IOException e) {

            e.printStackTrace();
        }
        return saved;
    }

继承我的阵列

public class Person {

private String name;
private String add;
private String gender;
private String status;
    public double rpd;
    public double dwork;
    public static int EmployeeCount;
    public double gincome;
    public double nincome;
    public double deduc;
    public double sss;
    public double pagibig;
    public double phil;



public Person(double gincome, double nincome, double deduc, double sss, double 
pagibig, double phil ) {
    this.gincome = gincome ;
    this.nincome = nincome;
    this.deduc = deduc;
    this.sss = sss;
            this.pagibig= pagibig;
            this.phil = phil;
}

Person( String name , double gincome, double sss, double pagibig, double phil,   
double deduc, double nincome){
    this.gincome = gincome;
    this.nincome = nincome;
    this.sss = sss;
    this.pagibig = pagibig;
    this.phil = phil;
    this.deduc = deduc;

}

Person(String name, String add, String gender, String status, double dwork, double rpd)    
{

            this.name = name;
    this.add = add;
    this.gender = gender;
    this.status = status;
            this.rpd = rpd;
            this.dwork = dwork;

}



    public double getGincome(){
        gincome=rpd*dwork;
        return gincome;
    }

    public double getDeduc(){
        double sss = gincome *.03 ;
        double pagibig = gincome *.02;
        double philhealth = gincome* .0125 ;
        deduc= sss + pagibig +philhealth;

        return deduc;
    }


     public double getNincome(){
         return nincome;
     }

     public double getSss(){
         return sss = getGincome() * .03;


     }
     public double getPagibig(){
         return pagibig = getGincome() * .02;


     }
     public double getPhil(){
         return phil = getGincome() * .0125;


     }
    public static int getEmployeeCount(){
    return EmployeeCount;
   }

public String getName() {
    return name;
}

public String getAdd() {
    return add;
}

public String getGender() {
    return gender;
}

public String getStatus() {
    return status;
}

   public double getRpd(){
            return rpd;
    }

    public double getDwork(){
            return dwork;
    }



public void setName(String name) {
    this.name = name;
}

public void setAdd(String add) {
    this.add = add;
}

public void setGender(String gender) {
    this.gender = gender;
}

public void setStatus(String status) {
    this.status = status;

}

    public void setRpd(double rpd){
        this.rpd = rpd;
    }

    public void setdWork(double dwork){
        this.dwork = dwork;
    }




}

我希望你能帮助我们。

2 个答案:

答案 0 :(得分:1)

如果您被允许,请使用BufferedWriter(可能您不是出于家庭作业或其他原因)。

File file = new File(filename);
if (!file.exists())
{
    try
    {
        file.createNewFile();
    } catch (Exception e)
    {
        e.printStackTrace();
    }
}
try
{
    // Read to end of file for writing
    BufferedReader read = new BufferedReader(new FileReader(file));
    String complete = "";
    String line = null;
    while ((line = read.readLine()) != null)
    {
        complete += line + "\n";
    }

    // Write your data
    BufferedWriter write = new BufferedWriter(new FileWriter(file));
    for (Person payroll : payrolls) 
    {
        write.append(payroll.getName());
        write.append(Double.toString(payroll.getGincome()));
        write.append(Double.toString(payroll.getSss()));
        write.append(Double.toString(payroll.getPagibig()));
        write.append(Double.toString(payroll.getPhil()));
        write.append(Double.toString(payroll.getDeduc()));
        write.append(Double.toString(payroll.getNincome()));
    }
    read.close();
    write.close();
} catch (Exception e)
{
    e.printStackTrace();
}

如果您的for循环和所有getter方法都已正确使用,这应该有用。

答案 1 :(得分:0)

在finally块中的pw.flush();之前尝试pw.close();。它可以解决问题。 否则代码对我来说是正确的。