cannot write in the file [closed]

一个人想着一个人 提交于 2019-12-13 22:16:10

问题


good day guys, im creating a program that will write the data to a text file. the data is coming from an array list, it is a data that is solved from the array list e.g :

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

the problem is i cannot write to my txt file..here is my code in writing the data:

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;
    }

heres my array

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;
    }




}

i hope you can help me guys.


回答1:


Use a BufferedWriter instead, if you are allowed to (maybe you aren't for homework purposes or some other reason).

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();
}

This should work if your for loop and all your getter methods are properly used.




回答2:


Try pw.flush(); before pw.close(); in the finally block. It may solve the problem. Otherwise the code looks correct to me.



来源:https://stackoverflow.com/questions/15776630/cannot-write-in-the-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!