PrintWriter不保存所有字符

时间:2015-01-17 20:39:06

标签: java file input output printwriter

class Start 
{
    File plikIN;
    Scanner in;
    PrintWriter out;

    Start(String input, String output)
    {
        plikIN = new File(input);
        try{
        in = new Scanner(plikIN);
        out = new PrintWriter(output);
        } catch (FileNotFoundException e) {System.out.println("Nie odnaleziono podanego pliku\n"+e);}
    }

    private void saveing() throws IOException
    {
        String word;
        int wordLength;
        String wordTable[];
        char c;

        while((word = in.next()) != null)
        {
            wordLength = word.length();
            wordTable = new String[wordLength];
            for(int k=0; k<wordTable.length; ++k)
            {
                c = word.charAt(k); 
                out.println(c);
            }   
        }
        out.close();
    }

    public static void main(String[] args) throws IOException
    {
        String nazwaPlikuWejsciowego = args[0];
        String nazwaPlikuWyjsciowego = args[1];
        Start doit = new Start(nazwaPlikuWejsciowego, nazwaPlikuWyjsciowego);
        doit.saveing();

    }
}

我的问题是保存到文件。在上面的saveing方法之后,该文件不包含任何单个字符。例如,当我将out.close()移动到while时,该文件包含一个单词。 out.close()位于for时,程序仅保存一个字符。为什么呢?

2 个答案:

答案 0 :(得分:3)

out.flush()之前添加out.close()

您需要在关闭之前将字节刷新到磁盘。

答案 1 :(得分:0)

((word = in.next()) != null)会抛出异常。 当没有更多元素时,in.next()不返回null。看看API