黑马程序员技术交流社区

标题: 文件复制为啥只复制最后一段或最后一行??? [打印本页]

作者: 心?=忐§忑]    时间: 2014-5-2 21:56
标题: 文件复制为啥只复制最后一段或最后一行???
  1. import java.io.*;

  2. public class Demo10 {
  3.         public static void main(String args[]) throws IOException {
  4.                 BufferedReader bf = new BufferedReader(new FileReader(new File("e:\\xxxd.txt"))) ;
  5.                 String str = null ;
  6.                 while((str = bf.readLine())!=null){
  7.                 System.setOut(new PrintStream(new File("e:\\cyc\\copy.txt"))) ; //改变打印方向
  8.                 System.out.println(str) ;
  9.                 }
  10.         }
  11. }
复制代码

作者: skill20    时间: 2014-5-2 22:21
本帖最后由 skill20 于 2014-5-2 22:23 编辑

PrintStream是自动刷新不是你这样弄吧?我觉得是没刷新弄的。  System.setOut(new PrintStream("e:\\cyc\\copy.txt"),true);考谱不?

作者: lzhuas    时间: 2014-5-2 22:26
本帖最后由 lzhuas 于 2014-5-2 22:43 编辑

import java.io.*;

public class Demo10 {
        public static void main(String args[]) throws IOException {
                BufferedReader bf = new BufferedReader(new FileReader(new File("e:\\xxxd.txt"))) ;
                String str = null ;                                PrintWriter out  = new PrintWriter(new FileWriter("e:\\cyc\\copy.txt"),true);//解决办法
                while((str = bf.readLine())!=null){
                //System.setOut(new PrintStream(new File("e:\\cyc\\copy.txt"))) ; //改变打印方向//我看了很久,问题就在你这一行,你不要太贪方便了,在循环里你就不断的创建文件,不断覆盖。。。所以就剩最后一行啦,实在不会就参考着视频写吧,我也在挣扎呢。解决办法是在外面创建流和文件。还有别忘了关闭流,黑马程序员要有好习惯!
               out.println(str) ;
                }        }
}





作者: Lin0411    时间: 2014-5-2 22:56
犯了一个很低级的错误!!每次写入之前都重新设置了流,肯定只写最后一行了!!
public class Demo10 {

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

                BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream("g:\\xxxd.txt"))) ;

                String str = null ;
                System.setOut(new PrintStream("g:\\copy.txt"));
                while((str = bf.readLine())!=null){
                    System.out.println(str);
                }

                bf.close();

        }

}
作者: 多一点    时间: 2014-5-2 22:58
while((str = bf.readLine())!=null){
                System.setOut(new PrintStream(new File("e:\\cyc\\copy.txt"))) ; //改变打印方向
                System.out.println(str) ;
                }
new PrintStream //开流
new File("e:\\cyc\\copy.txt")//新建文件。
你每读一行,就开一次流,创建一个文件把 上一次的覆盖掉,
最后得到的就是你那样的东西啦。
作者: 心?=忐§忑]    时间: 2014-5-5 14:46
谢谢各位了,我还真没想到这个,对这个还没了解透吧!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2