黑马程序员技术交流社区
标题:
IO流的小疑惑
[打印本页]
作者:
胥文
时间:
2013-1-29 21:09
标题:
IO流的小疑惑
本帖最后由 张向辉 于 2013-1-30 11:53 编辑
操作数据就要用
IO
流,用了
IO
流是不是就要关资源,此处的资源是指的系统资源还是什么啊
如果流没有使用系统资源是不是不用关流了?
作者:
vmvm555
时间:
2013-1-29 21:44
这里的系统资源指的是可能有cpu资源,你如果是从硬盘中读取大量数据的话可能还要占一部份硬盘资源,连上网络可能还有网卡资源,所谓的系统资源指的就是硬件资源吧(我是这么理解的),一个流创建出来就是为了读取和写入数据的,怎么会不占用系统资源呢,就算是没有使用系统资源,你不关闭的话就会产生我不用,但别人也别想用这种效果,所以建议流用完了还是要关闭
作者:
沈文杰
时间:
2013-1-29 22:00
流可以看成一根管子,文件相当于水,
第一步:FileReader fr = new FileReader("d:\\demo.txt");相当于把内存中出现一根水管硬盘中的资源(水)放进管子里面,这时候就相当于资源进了内存;
第二步:String[] arr = null;这里相当于一个蓄水池;
第三步:FileWriter fw = new FileWriter("d\\demo.txt");相当于把蓄水池中
的水(资源)放进水管;这是需要关闭资源就是把管子拿走。
不能发图片悲剧
作者:
沈文杰
时间:
2013-1-29 22:03
第二部发错了点,int ch = 0;或者char [] arr = new char[1024];
作者:
王溢君
时间:
2013-1-29 22:03
流是设备间通信用的,怎么可能不占用资源?不占用的话他怎么复制啊。。。
就像货车拉货,没有马路给他用,你货车怎么拉货从广州到上海?这里用得资源还比较多呢!!!
io流, 由于java底层是用c实现的, 看下面的代码,
所以当我们不停的调用new InputStream -> impl 时候, c打开的文件会一直没有关闭,而导致文件删除不了,别的程序访问不了的问题,和操作系统打开文件
超过最大数异常。而下面new FileInputStream(new File("c:/q.txt"));这种方式没有关闭c打开的
文件一直new 就会出现打开文件太多异常。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class TestInputStream {
public static void main(String[] args) {
short count = 0;
InputStream inStream = null;
try {
for (int i = 0; i < Short.MAX_VALUE; i++) {
//inStream.
inStream = new FileInputStream(new File("/root/install.log"));
//count ++;
System.out.println("count: " + count++);
}
//p.load(inStream);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(inStream != null) try{ inStream.close(); } catch(IOException e){};
}
System.out.println(Short.MAX_VALUE);
*/
short count = 0;
InputStream inStream = null;
for (int i = 0; i < Short.MAX_VALUE; i++) {
try {
//inStream.
inStream = new FileInputStream(new File("/root/install.log"));
//count ++;
System.out.println("count: " + count++);
//p.load(inStream);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(inStream != null) try{ inStream.close(); } catch(IOException e){};
}
}
System.out.println(Short.MAX_VALUE);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2