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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Eagle 于 2014-11-11 13:32 编辑
  1. </blockquote></div><div class="blockcode"><blockquote>/*
复制代码

import java.io.*;
class ByteArrayStream
{
        public static void main(String[] args) throws IOException
        {
                byteArray();
        }
        
        //操作字节数组的方法
        public static void byteArray()throws IOException
        {
                //数据源。
                ByteArrayInputStream bis = new ByteArrayInputStream("abcdefg".getBytes());//字节数组读取流

                //数据目的
                ByteArrayOutputStream bos = new ByteArrayOutputStream();//字节数组输出流

                int by = 0;//读取字节存储
                while ((by=bis.read())!=-1)//循环读取
                {
                        bos.write(by);//输出
//                        sop(by);
                }

                sop(bos.size());//查看长度
                sop(bos.toString());//将字节转换为字符串输出

                bos.writeTo(new FileOutputStream("a.txt"));//输出到字节输出流
/*就是这里,这里的字节输出流怎么关闭?因为调用了底层资源,要关闭的。是用下面的bos.close()关闭吗?还是其他怎么写的?
毕老师的视频中没有详细的谈到这个问题。问一下大牛们,这个问题怎么解决啊*/
                bos.close();//这里能不能关闭底层资源的调用呢?
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

10 个回复

倒序浏览
这个咋沉了啊。。。。大神解答啊!:'(:'(
回复 使用道具 举报
bos是不需要进行关闭底层资源的,因为它操作的是内存中的数据,不需要底层资源的
回复 使用道具 举报
zhangyangLengen 发表于 2014-11-12 08:51
bos是不需要进行关闭底层资源的,因为它操作的是内存中的数据,不需要底层资源的 ...

知道,但是这个  bos.writeTo(new FileOutputStream("a.txt"));//输出到字节输出流,
有调用到底层资源啊??怎么关??
回复 使用道具 举报
此时你只需要关闭:new FileOutputStream("a.txt")这个对象的资源,你最好先声明这个对象
回复 使用道具 举报
public synchronized void writeTo(OutputStream out) throws IOException {
        out.write(buf, 0, count);
    }
这个是系统的底层代码

你也可以去看看
回复 使用道具 举报
而FileOutStream中的这个流,当写数据时,需要关闭系统资源的
这个是FileOutStream的底层的关闭方法:
public void close() throws IOException {
        if (channel != null)
            channel.close();
        close0();
    }
回复 使用道具 举报
哥们,你是现在工作了吗
回复 使用道具 举报
close0()这个方法是系统底层方法
回复 使用道具 举报
Eagle 高级黑马 2014-11-12 10:51:49
10#
zhangyangLengen 发表于 2014-11-12 10:15
哥们,你是现在工作了吗

没有工作,是辞职在家学习呢。呵呵,还是没懂应该怎么关闭匿名的流对象。、。
回复 使用道具 举报
Eagle 高级黑马 2014-11-12 10:54:31
11#
zhangyangLengen 发表于 2014-11-12 10:17
close0()这个方法是系统底层方法

恩恩,对,就是想关闭底层资源
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马