黑马程序员技术交流社区
标题:
IO流读取时缓存的问题!
[打印本页]
作者:
高庆亮
时间:
2011-11-16 12:43
标题:
IO流读取时缓存的问题!
public static void main(String[] args) {
//得到文件对象
File f1 = new File("D:\\Program Files\\eclipse中文\\Turing\\u\\src\\g.java");
//创建文件夹对象
File f2 = new File("e:\\program files1");
File f3 = new File("e:\\program files1\\java.txt");
try {
//---------------复制过程------------------
//创建输入,字节流
FileInputStream fis = new FileInputStream(f1);
//定义一个字节数组 当缓存
byte [] bytes = new byte[1024];
int n=0;//得到实际读取到的字节数
//循环读取
while((n=fis.read(bytes))!=-1){
//把字节转成string
String s = new String(bytes,0,n);
//----------------粘贴过程------------------
//创建program files1 文件夹
f2.mkdir();
//创建program files1 下面的文档
f3.createNewFile();
//将复制过来的信息存放到java.txt文件中
FileOutputStream fos = new FileOutputStream(f3);
fos.write(s.getBytes());
System.out.println(s.getBytes());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
上面红色字体部分怎么起到的缓存作用啊!
还有那个while循环和字节转换String我输出s.getBytes时应该输出的不就是 读取进来的信息了么?可是不是呀?这个缓存把我弄晕了,我想把它拿掉可是以后要是碰见大一点的输入输出流我就没办法了。
作者:
宋文轩
时间:
2011-11-16 12:54
将读取到的字符都存储到一个数组中,数组就是临时存储数据的容器,也就是相当于缓存了,否则的话就是读取一个写一个了 那样就没有缓存作用了
最后输出的确实就是你读取到的东西,但是你打印到控制台是看不到你写的东西的 你直接打印字符串就可以看到了,现在你写的是打印字节。
还有个问题 你创建目录和文件的过程放到循环外面,否则每次创建新的,那么你最后只有写到后面的那点东西了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2