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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥文 中级黑马   /  2013-1-29 21:09  /  1000 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-30 11:53 编辑

操作数据就要用IO流,用了IO流是不是就要关资源,此处的资源是指的系统资源还是什么啊
如果流没有使用系统资源是不是不用关流了?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

4 个回复

倒序浏览
这里的系统资源指的是可能有cpu资源,你如果是从硬盘中读取大量数据的话可能还要占一部份硬盘资源,连上网络可能还有网卡资源,所谓的系统资源指的就是硬件资源吧(我是这么理解的),一个流创建出来就是为了读取和写入数据的,怎么会不占用系统资源呢,就算是没有使用系统资源,你不关闭的话就会产生我不用,但别人也别想用这种效果,所以建议流用完了还是要关闭
回复 使用道具 举报
流可以看成一根管子,文件相当于水,
第一步:FileReader fr = new FileReader("d:\\demo.txt");相当于把内存中出现一根水管硬盘中的资源(水)放进管子里面,这时候就相当于资源进了内存;
第二步:String[] arr = null;这里相当于一个蓄水池;
第三步:FileWriter fw = new FileWriter("d\\demo.txt");相当于把蓄水池中
的水(资源)放进水管;这是需要关闭资源就是把管子拿走。
不能发图片悲剧
回复 使用道具 举报
第二部发错了点,int  ch = 0;或者char [] arr = new char[1024];

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
流是设备间通信用的,怎么可能不占用资源?不占用的话他怎么复制啊。。。
就像货车拉货,没有马路给他用,你货车怎么拉货从广州到上海?这里用得资源还比较多呢!!!

io流, 由于java底层是用c实现的, 看下面的代码,
所以当我们不停的调用new InputStream -> impl 时候, c打开的文件会一直没有关闭,而导致文件删除不了,别的程序访问不了的问题,和操作系统打开文件
超过最大数异常。而下面new FileInputStream(new File("c:/q.txt"));这种方式没有关闭c打开的
文件一直new 就会出现打开文件太多异常。
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.InputStream;

  6. public class TestInputStream {

  7.     public static void main(String[] args) {
  8.       
  9.       short count = 0;
  10.         InputStream inStream = null;
  11.             try {
  12.                 for (int i = 0; i < Short.MAX_VALUE; i++) {
  13.                     //inStream.
  14.                     inStream = new FileInputStream(new File("/root/install.log"));
  15.                     //count ++;
  16.                     System.out.println("count: " + count++);
  17.                 }
  18.                 //p.load(inStream);
  19.             } catch (FileNotFoundException e) {
  20.                 // TODO Auto-generated catch block
  21.                 e.printStackTrace();
  22.             } finally{
  23.                 if(inStream != null) try{ inStream.close(); } catch(IOException e){};
  24.             }
  25.         
  26.         System.out.println(Short.MAX_VALUE);
  27.         */
  28.         short count = 0;
  29.         InputStream inStream = null;
  30.         for (int i = 0; i < Short.MAX_VALUE; i++) {
  31.             try {
  32.                     //inStream.
  33.                     inStream = new FileInputStream(new File("/root/install.log"));
  34.                     //count ++;
  35.                     System.out.println("count: " + count++);
  36.                
  37.                 //p.load(inStream);
  38.             } catch (FileNotFoundException e) {
  39.                 // TODO Auto-generated catch block
  40.                 e.printStackTrace();
  41.             } finally{
  42.                 if(inStream != null) try{ inStream.close(); } catch(IOException e){};
  43.             }
  44.         }
  45.         
  46.         System.out.println(Short.MAX_VALUE);
  47.         
  48.     }
  49. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马