InputStream 和 Reader(字节流和字符流)

     InputStream 和Reader 是所有输入流的抽象基类,本身并不能创建实例来执行输入,但它们将成为所有输入流的模板,所以它们的方法是所有的输入流方法都可以用的。

     InputStream 和 Reader 都是抽象类,现在实现它们的文件输入流(均为字节流):FileInputStream 和 FileReader来演示:

FileInputStream:

public class FileInputStreamTest {

	public static void main(String[] args) {

		try (FileInputStream fis = new FileInputStream(
				"C:/Users/Administrator/Workspaces/MyEclipse Professional 2014/JavaTest/src/com/code_15_3/FileInputStreamTest.java")) {
			byte[] bbuf = new byte[100]; //定义100字节
			int hasRead = 0; 
                        while ((hasRead = fis.read(bbuf)) > 0) { //100字节无法读取全部内容,故会继续移动read的指针,循环多次,直到read()返回-1

				System.out.println(new String(bbuf, 0, hasRead));

			    /* if (fis.markSupported()) // 判断此输入流是否支持指针的mark/reset
				{
					fis.reset(); //将指针指向重新定位到上一次记录标记(mark)的位置
				}
                            */
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

}

FileReader: 

public class FileReaderTest {
	public static void main(String[] args) {

		try (FileReader fr = new FileReader(
				"C:/Users/Administrator/Workspaces/MyEclipse Professional 2014/JavaTest/src/com/code_15_3/FileReaderTest.java")) {
			char[] cbuf = new char[32];
			int hasRead = 0;
			while (((hasRead = fr.read(cbuf)) > 0)) {
				System.out.println(new String(cbuf, 0, hasRead));
			}
                        fr.close() //可省略,有try()自动关闭
                   } catch (IOException ex) {
			ex.printStackTrace();
		}
	}
  看上面两段代码,发现其实用法并没有太大不同,关键就在是以字节还是以字符方式输入。

值得注意的是,java 7 改写了所有的IO资源类,它们都实现了AutoCloseable()接口,因此可通过自动关闭资源的try()语句来关闭这些IO流。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值