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();
}
}
案例中有不清楚的地方可以在评论区留言或者私信道哥@道哥说编程
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...