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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下,问题在注释中:
————————————————————————————————————————
import java.io.File;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
public class OutputStreamDemo01{
        public static void main(String args[])throws Exception{
                File f = new File("i:"+File.separator+"code"+File.separator+"java"+File.separator+"OutputStream.txt");
                OutputStream ops = new FileOutputStream(f);
                String  str = "hezi";
                byte[] b = str.getBytes();
                ops.write(b);
                ops.close();
                InputStream ips = new FileInputStream(f);
                byte b2[] = new byte[(int)f.length()];//此处字符串的字节数是四,一个字母占一个字节,
                //char类型一个字母为什么占的是两个
                int num = ips.read(b2);
                int i = ips.read();//读取的i=-1,而不是104?
                ips.close();
                System.out.println("content:" + i + "\t" + "num:" + num +
                "\t" + "length:" + f.length());
        }
}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
int num = ips.read(b2);//第一次读取的时候就已经把流里的数据都存到b2数组里面了
System.out.println(Arrays.toString(b2)); //打印数组里面的数据
int i = ips.read();//所以这里读取的话返回是-1
注:如果想一个一个字节读取数据的话,用ips.read();返回的就是字节
回复 使用道具 举报
林志进 发表于 2012-10-28 12:24
int num = ips.read(b2);//第一次读取的时候就已经把流里的数据都存到b2数组里面了
System.out.println(Ar ...

不太明白数据流是怎么回事,文件里的数据给读取到数组里了就不能再次读取了?得重新初始化一个流的对象来读取文件内容?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马