黑马程序员技术交流社区

标题: 字符串所在字节大小以及字符串读取问题? [打印本页]

作者: 刘文飞    时间: 2012-10-28 11:11
标题: 字符串所在字节大小以及字符串读取问题?
代码如下,问题在注释中:
————————————————————————————————————————
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());
        }
}


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

不太明白数据流是怎么回事,文件里的数据给读取到数组里了就不能再次读取了?得重新初始化一个流的对象来读取文件内容?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2