3、InputStream

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));

	}

}

  

原文地址:https://www.cnblogs.com/1020182600HENG/p/6930777.html