在java中复制文件(整个文件没有被复制)

时间:2015-01-05 13:50:01

标签: object file-handling object-oriented-analysis

import java.io.*;

public class ReadFile {

    public static void main(String[] args) throws IOException {

            File in = new File("in.txt");
            //File out = new File("out.txt");
            FileOutputStream fos= new FileOutputStream("o.txt");
            //PrintWriter fw= new PrintWriter(out);

            if(!in.exists())
            {
                in.createNewFile();
                //System.out.println("Hey");
            }

            FileReader is = new FileReader(in);
            BufferedReader br= new BufferedReader(is);


            while(true)
            {
                if(in.canRead())
                {
                    try {
                        System.out.println(br.readLine());
                        fos.write((br.readLine()).getBytes());
                    } catch (Exception e) {
                        // TODO Auto-generated catch block

                        fos.close();
                        br.close();

                        System.out.println("Im breaking");                      
                        break;

                    }
                }
                else
                {
                    fos.close();                    
                    System.out.println("closed");
                    break;
                )   

            }
    }
}
//end of file
  • 我试图将文本从一个文件复制到Java中的另一个文件。我知道我们可以逐字节复制但我想用字符串来做!怎么了?

实际档案:Actual file

输出文件:Output file (no formatting and the whole document is not getting copied)

2 个答案:

答案 0 :(得分:0)

如果您使用Java7,则可以使用Files.copy(source.toPath(), dest.toPath());,因此您无需阅读该文件。或者从apache commons io使用FileUtils.copyFile(source, dest);

答案 1 :(得分:0)

                    System.out.println(br.readLine());
                    fos.write((br.readLine()).getBytes());

  1. 阅读一行,将其打印到stdout
  2. 阅读另一行,将其写入fos
  3. 因此输出文件中可能缺少某些行。此外,readLine()会丢弃行终止字符。你需要自己添加它们。