专业的JAVA编程教程与资源

网站首页 > java教程 正文

详解Java IO流中的InputStream和Reader类

temp10 2025-03-05 21:39:51 java教程 53 ℃ 0 评论
package filedemo;

import java.io.*;

/**
 * 本类讲解Java IO流之InputStream和Reader 在Java中InputStream和Reader均属于抽象类 所以不能直接实例化本身
 * 需要实例化其实现类(FileInputStream字节流和FileReader字节流)
 * 
 * @author 道哥说编程
 * 
 */
public class InputStreamAndFileReader {
	/**
	 * 该方法实现用InputStream的子类FileInputStream读取自身的效果
	 * 
	 * @throws FileNotFoundException
	 */
	public static void InputStreamDemo() {
		// 创建字节输入流对象
		try {
			//指定绝对路径
			//File file = new File("E:\\books.xml");
			//使用当前项目的根目录
			File file = new File("books.xml");
			FileInputStream files = new FileInputStream(file);
			//创建一个字节数组(这个地方的字符数组长度要自定义合适不然的话一行稍微长点的字符串就会变成两行读取)
			byte[] buff = new byte[1024];
			//保存实际读取的字节数
			int hasRead=0;
			//用循环语句来逐句读取
			while((hasRead = files.read(buff))>0)
			{
				//取出数据
				System.out.println(new String(buff,0,hasRead));
			}
			//用完了记得关闭连接(因为IO资源不属于内存资源,垃圾回收站无法回收,所以需要手动的关闭该资源)
			files.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void fileReaderDemo()
	{
		// 创建字符输入流对象
		try {
			//指定绝对路径
			//File file = new File("E:\\books.xml");
			//使用当前项目的根目录
			File file = new File("books.xml");
			FileReader files = new FileReader(file);
			//创建一个字节数组(这个地方的字符数组长度要自定义合适不然的话一行稍微长点的字符串就会变成两行读取)
			char[] buff = new char[1024];
			//保存实际读取的字节数
			int hasRead=0;
			//用循环语句来逐句读取
			while((hasRead = files.read(buff))>0)
			{
				//取出数据
				System.out.println(new String(buff,0,hasRead));
			}
			//用完了记得关闭连接(因为IO资源不属于内存资源,垃圾回收站无法回收,所以需要手动的关闭该资源)
			files.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		System.out.println("----------字节流读取---------");
		InputStreamDemo();
		System.out.println("----------字符流读取---------");
		fileReaderDemo();
	}

}

案例中有不明白的地方可以在评论区留言或者私信道哥@道哥说编程

详解Java IO流中的InputStream和Reader类

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表