![]()
![]()
package com.io.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
//InputStream
//(1)从流中读取数据
// int read() 读取一个字节,返回值为所读得字节
// int read(byte b[]) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际独取的
// 字节的数量。
// int read(byte b[] ,int off,int len)读取len个字节,放置到以下标off开始字节数组b中,返回值为实际
// 读取的字节的数量。
// int available() 返回值为流中尚未读取的字节的数量。
// long skip(long n);读指针跳过n个字节不读,返回值为实际跳过的字节数量
//(2)关闭流
// close() 流操作完毕后必须关闭
//(3)使用输入流中的标记
// void mark(int readlimit)纪录当前指针的所在位置.readlimit表示读指针读出的readlimit个字节后
// 所标记的指针位置才实效。
// void reset() 把读指针重新指向用mark方法所记录的位置
// boolean markSupported() 当前的流是否支持读指针的记录功能。
public class TestInputStream {
public static void main(String[] args) throws IOException {
File f = new File("E:" + File.separator + "单选题gbk.txt");
InputStream fis = new FileInputStream(f);
System.out.println("未读之前的字节长度为 " + fis.available());
System.out.println("read()是读取一个字节,但是中文占两个字节,所以显示乱码,建议使用数组: "
+ (char) fis.read());
fis.read();
// System.out.println((char)(fis.read()+fis.read()));//乱码
// System.out.println(new String(new byte[]{(byte) fis.read(),(byte)
// fis.read()},0,2));//乱码
// byte[] b=new byte[1024];
byte[] b = new byte[324];
int read = fis.read(b);
System.out.println("实际读取字节的数量为 " + read);
System.out.println("尚未读取的字节的数量为 " + fis.available());
System.out.println(new String(b, 0, read));
}
}