A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心灵之歌 中级黑马   /  2013-8-17 11:04  /  1150 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求大神指点下面这段程序怎么写了,文件是创建了。可文件里面是空的,为什么?????
public static void main(String[] args) throws IOException {
                BufferedInputStream is = new BufferedInputStream(new FileInputStream("c://aaaa.txt"));
               BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream("c://bbbb.txt"));
               
                 int n;
             byte[] buf = new byte[1024];
             while((n = is.read(buf)) != -1) {
                     os.write(buf, 0, n);
             }
        }
}

3 个回复

倒序浏览
  1. import java.io.*;
  2. public class Test{
  3.         public static void main(String[] args) throws IOException {
  4.                 BufferedInputStream is =
  5.                         new BufferedInputStream(new FileInputStream("c://aaaa.txt"));
  6.                 BufferedOutputStream os =
  7.                         new BufferedOutputStream(new FileOutputStream("c://bbbb.txt"));
  8.                 int n;
  9.                 byte[] buf = new byte[1024];
  10.                 while((n = is.read(buf)) != -1) {
  11.                         os.write(buf, 0, n);
  12.                          }
  13.                 os.close();
  14.         }
  15. }
复制代码
试试这个....
回复 使用道具 举报
我来解释下,首先为了提高效率,lz使用了缓冲区,但是你把文件aaaa.txt读取后先存放到读取流缓冲区,然后把读取流缓冲区里面的字符再放到写入流的缓冲区中,并没有直接写入到bbbb.txt文件中,所以最后要刷新下,把写入流缓冲区中的字符刷新到bbbb.txt中,所以最后要加一句代码 os.close();  因为jvm默认关闭写入流前刷新一次。如果不用这个代码,也可以用os.flush();
所以为什么你的bbbb.txt是空的,是因为你没有刷新。
回复 使用道具 举报
哦,我还是觉得PrintWriter比较好用,写入建议用这个
new PrintWriter(OutputStream a , boolean true);
如果参数列2指定为true的话,可以给它的方法println(),printf()等加了自动刷新功能,而且这个两个方法具备自动换行的功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马