JAVA CharacterIO无法弄清楚如何追加

时间:2017-11-28 18:54:22

标签: java append character

我有这段代码,我无法弄清楚什么是无效的。我尝试了所有可能的组合,但我无处可去。这个代码的要点是它应该将文本文件和内容复制到另一个文件中,当第三个参数是" r"时。这工作正常,但当我尝试将内容附加到文件中时,它不会工作,我无法理解。这是下面的代码。 我把那个不起作用的部分分开了。

import java.io.*;

public class Copy
{   
public static void main(String[] args)
{

  if(args.length == 3)
  {
     try
     {                 
           FileReader inputFile = new FileReader(args[0]);
           FileWriter outputFile = new FileWriter(args[1]);
           int chr = inputFile.read();

           while (chr != -1)
           {
              outputFile.write(chr);
              chr = inputFile.read();
           }
           outputFile.flush();          
           if(args[2].equals("r"))
           {
              chr = inputFile.read();

              while(chr != -1)
              {
                 outputFile.write(chr);
                 chr = inputFile.read();
              }
           outputFile.flush();
           }



else if(args[2].equals("a"))
    {
       chr = inputFile.read();

       while(chr != -1)
       {
          outputFile.write(chr);
          chr = inputFile.read();
       }
       outputFile.flush();
   }


     }
     catch(IOException e)
     {
        System.out.println("Exception: " +  e.getMessage());
     }
     }
     else
     {
        System.out.println("Invalid number of args. Program will exit.");
        System.exit(0);
     }
    }

}

2 个答案:

答案 0 :(得分:0)

在第一个>>> l = [(451,165,76,-77,[98,42])] >>> l[0] (451, 165, 76, -77, [98, 42]) >>> l[0][0] 451 >>> l[0][1] 165 >>> l[0][3] -77 >>> l[0][4] [98, 42] >>> l[0][4][0] 98 >>> l[0][4][1] 42 循环中,您正在读取输入文件并将其完全写入另一个文件。这就是为什么当你再次尝试在while循环中再次调用read()时,它会抛出一个异常,因为文件已被完全读取。删除以下代码(第一个while循环):

if...

并将其替换为

       int chr = inputFile.read();

       while (chr != -1)
       {
          outputFile.write(chr);
          chr = inputFile.read();
       }
       outputFile.flush();      

编辑: 在你的第二个条件(for append)中使用以下代码:

int chr;

答案 1 :(得分:0)

好的,找到了解决方案。 我需要做的只是在两个if语句中调用FileWriter(" r"&" a")现在它正在按预期工作。谢谢Chetan Jadhav的帮助:)