使用类方法java将文本输出到文件

时间:2014-07-12 17:39:47

标签: java file-io

我有一个valet类方法,应该将小时工资写入文件:

public void hourlyOverall() throws FileNotFoundException
{
    PrintWriter out = new PrintWriter("wage info");
    new FileOutputStream("wage info", true);
    hourlyOverall = tips / hours + hourlyWage;
    out.println(hourlyOverall);
}

但是,当我在valet.hourlyOverall()方法中运行main时,会创建“工资信息”文件,但不会写入任何内容。我做错了什么?

4 个答案:

答案 0 :(得分:1)

首先使用try-catch进行Exception处理,然后在finally块中关闭OutputStream

out.flush();

像这样的事情

try {
        PrintWriter out = new PrintWriter("wage info");
        hourlyOverall=tips/hours+hourlyWage;
        out.println(hourlyOverall);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    finally {
        out.flush();
    }

答案 1 :(得分:1)

我认为这是解决问题的另一种方法,但使用其他类

public class valet {
    public static void main(String []args)throws IOException
    {
        try
        {
            hourlyOverall()
        }
        catch(IOException ex)
        {
            System.out.println(ex+"\n");
        }
    }

    public void hourlyOverall() throws IOException
    {
        FileWriter out = new FileWriter("wage info");
        hourlyOverall=tips/hours+hourlyWage;
        out.write(hourlyOverall+"\r\n");
        out.close();
    }
}

答案 2 :(得分:0)

您可能不应声明匿名FileOutputStream并且您应该关闭PrintWriter

PrintWriter out=new PrintWriter("wage info");
// new FileOutputStream("wage info",true);
hourlyOverall=tips/hours+hourlyWage;
out.println(hourlyOverall);
out.close();                             // <-- like that

答案 3 :(得分:0)

做这样的事情(如果java7或更高版本):

 public void hourlyOverall()
    {
        try (PrintWriter out=new PrintWriter("wage info")){
           //new FileOutputStream("wage info",true);
           hourlyOverall=tips/hours+hourlyWage;
           out.println(hourlyOverall);
        }catch (FileNotFoundException e) {
           e.printStackTrace();
        }
    }

http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html