Java IO: 使用scanner和printWriter将一个文本文件的内容复制到另一个文本文件中

Java IO: Using scanner and printWriter to copy the contents of a text file and put them in another text file

好吧,我正在开发一个非常小的程序,旨在获取文本文件 test.txt 的内容,并将它们放入另一个空文件 testCopied.txt 中。诀窍是我想使用 Scanner 和 printWriter,因为我试图更好地理解它们。

我的代码如下所示:

import java.io.*;
import java.util.*;

public class CopyA
{
   public static void main(String [] args)
   {
      String Input_filename = args[0];
      String Output_filename = args[1];
      char r = args[2].charAt(0);

      try
      {
         Scanner sc = new Scanner(new File(Input_filename));
         FileWriter fw = new FileWriter(Output_filename);
         PrintWriter printer = new PrintWriter(fw);

         while(sc.hasNextLine())
         {
            String s = sc.nextLine();
            printer.write(s);
         }
         sc.close();               
      }
      catch(IOException ioe)
      {
         System.out.println(ioe);
      }
   }
}

编译通过了,但是当我查看testCopied.txt时它仍然是空白的,并且还没有将test.txt的内容传输给它。我究竟做错了什么? Java IO 让我很困惑,所以我试图更好地理解它。非常感谢任何帮助!

您错过了需要添加的 PrintWriter 对象的 flush() 和 close()

然后在将每一行写入第二个文件时使用行分隔符 System.getProperty("line.separator")

您可以参考以下代码:

PrintWriter printer = null;
Scanner sc = null;
try
  {
     String lineSeparator = System.getProperty("line.separator");

     sc = new Scanner(new File(Input_filename));
     FileWriter fw = new FileWriter(Output_filename);
     printer = new PrintWriter(fw);

     while(sc.hasNextLine())
     {
        String s = sc.nextLine()+lineSeparator; //Add line separator
        printer.write(s);
     }
  }
  catch(IOException ioe)
  {
     System.out.println(ioe);
  } finally {
    if(sc != null) {
       sc.close();  
    }
    if(printer != null) {
      printer.flush();
      printer.close();
     }
 }

此外,请确保您始终关闭 finally 块中的资源(您在代码中错过了 Scanner 对象)。