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 对象)。
好吧,我正在开发一个非常小的程序,旨在获取文本文件 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 对象)。