黑马程序员技术交流社区
标题:
字符流复制文件?
[打印本页]
作者:
心灵之歌
时间:
2013-8-17 11:04
标题:
字符流复制文件?
求大神指点下面这段程序怎么写了,文件是创建了。可文件里面是空的,为什么?????
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);
}
}
}
作者:
黄兴旺
时间:
2013-8-17 12:02
import java.io.*;
public class Test{
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);
}
os.close();
}
}
复制代码
试试这个....
作者:
a2213502
时间:
2013-8-17 12:16
我来解释下,首先为了提高效率,lz使用了缓冲区,但是你把文件aaaa.txt读取后先存放到读取流缓冲区,然后把读取流缓冲区里面的字符再放到写入流的缓冲区中,并没有直接写入到bbbb.txt文件中,所以最后要刷新下,把写入流缓冲区中的字符刷新到bbbb.txt中,所以最后要加一句代码 os.close(); 因为jvm默认关闭写入流前刷新一次。如果不用这个代码,也可以用os.flush();
所以为什么你的bbbb.txt是空的,是因为你没有刷新。
作者:
兜兜转转
时间:
2013-8-17 12:22
哦,我还是觉得PrintWriter比较好用,写入建议用这个
new PrintWriter(OutputStream a , boolean true);
如果参数列2指定为true的话,可以给它的方法println(),printf()等加了自动刷新功能,而且这个两个方法具备自动换行的功能。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2