如何复制文本文件,并用Java打印出原始和复制的文件

时间:2015-05-04 00:56:52

标签: java

我正在做一个需要获取文本文件(test.txt)并复制它并将其打印出来的程序。到目前为止,我只能打印出原始文件。我已经找到了这样做的方法,但似乎没有任何我能理解的帮助,我对java很新。我至少在寻找指导,而不仅仅是完整的答案。

我的代码到目前为止......

import java.io.*;

public class Copy{
    public static void main(String [] args){
        try{
            FileInputStream fis = new FileInputStream("test.txt");

            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            File a = new File("test.txt");
            FileReader fr = new FileReader(a);

            File b = new File("Copied.txt");
            FileWriter fw = new FileWriter(b);

            while(true){
                String line = br.readLine();
                if(line != null){
                    System.out.println(line);

                } else{

                    br.close();
                    break;
                } 
            }
        } catch(FileNotFoundException e){
            System.out.println("Error: " + e.getMessage());
        } catch(IOException e){
            System.out.println("Error: " + e.getMessage()); 
        }
    }
}

因为我正在努力学习这一点,所以我会非常感激任何帮助。谢谢

3 个答案:

答案 0 :(得分:1)

通常情况下,我建议使用Files.copy只是因为它简单,但由于您需要同时“打印”内容,我们可以使用您的代码。

然而,首先,作为一般经验法则,如果你打开它,你应该关闭它。这可以确保您不会将资源打开,这可能会影响代码的其他部分。

有关详细信息,请参阅The try-with-resources Statement

接下来,一旦您从源文件中读取了一行文本,您实际上需要将其写入目标文件,例如......

try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("Copied.txt"))) {
        String text = null;
        while ((text = br.readLine()) != null) {
            System.out.println(text);
            bw.write(text);
            bw.newLine();
        }
    }
} catch (FileNotFoundException e) {
    System.out.println("Error: " + e.getMessage());
} catch (IOException e) {
    System.out.println("Error: " + e.getMessage());
}

答案 1 :(得分:0)

如果您使用的是Java 1.7或更高版本,则可以使用Files.copy()

File src = "your File"; File dest = "your copy target" Files.copy(src.toPath(),dest.toPath());

Link to Javadoc

答案 2 :(得分:0)

将FileWriter更改为PrintStream:

PrintStream fw = new PrintStream(b);

然后你应该能够使用:

写入该文件
fw.println(line);