首页 > 系统相关 >Java IO流--使用FileReader字符输入流读入数据到java程序或者内存的基本操作

Java IO流--使用FileReader字符输入流读入数据到java程序或者内存的基本操作

时间:2022-11-17 10:31:22浏览次数:39  
标签:try fr Java read FileReader char 读入 fileReader 基本操作


前言:

1、流的分类:

  • 1.操作数据单位:字节流、字符流
  • 2.数据的流向:输入流、输出流
  • 3.流的角色:节点流、处理流

2、 流的体系结构:

二、流的体系结构
抽象基类 节点流(或文件流) 缓冲流(处理流的一种)
InputStream FileInputStream (read(byte[] buffer)) BufferedInputStream (read(byte[] buffer))
OutputStream FileOutputStream (write(byte[] buffer,0,len) BufferedOutputStream (write(byte[] buffer,0,len) / flush()
Reader FileReader (read(char[] cbuf)) BufferedReader (read(char[] cbuf) / readLine())
Writer FileWriter (write(char[] cbuf,0,len) BufferedWriter (write(char[] cbuf,0,len) / flush()

Java IO流--使用FileReader字符输入流读入数据到java程序或者内存的基本操作_字符输入流


FileReader的相关方法如下:

Java IO流--使用FileReader字符输入流读入数据到java程序或者内存的基本操作_字符输入流_02


注意点:

  1. read()方法的理解:返回读入的一个字符,如果达到文件的末尾,则返回-1
  2. 异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理
  3. 读入程序中的文件一定要存在,否则会报FileNotFoundException异常

使用一:

public class FileTest1 {
@Test
public void test1(){
FileReader fr=null;
try {
//1.实例化file类的对象,指明要操作的文件
File file = new File("hello.txt");
//2.提供具体的流
fr = new FileReader(file);
//3.数据的读入
//read():返回读入的一个字符,如果达到文件的末尾,则返回-1
int data;
while ((data=fr.read())!=-1){
System.out.print((char)data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fr!=null) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

输出结果:

abcdef

二、对read()方法进行操作升级,使用read的重载方法

@Test
public void FileReaderTest(){
FileReader fr = null;
try {
//1.实例化File类的对象
File file = new File("hello.txt");
//2.提供具体的流 FileRead流的具体实例化
fr = new FileReader(file);
//3.数据的读入
int len;
char[] cbuf = new char[5];
//read(char cbuf[]):返回每次读入cbuf数组中的字符的个数,如果达到文件末尾,则返回-1
while ((len=fr.read(cbuf))!=-1){
for (int i = 0; i <len ; i++) {
System.out.print(cbuf[i]);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//4.资源的关闭
if (fr!=null) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

输出结果:

abcdefhigklmn

使用二:

public class FileReader_ {
/**
* 单个字符读取文件
*/
@Test
public void fileReader01() {
String filePath = "D:\\story.txt";
FileReader fileReader = null;
int data = 0;
try {
fileReader = new FileReader(filePath);
//循环读取使用read,单个字符读取
while ((data = fileReader.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileReader != null) {
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* 使用字符数组读取文件
*/
@Test
public void fileReader02() {
String filePath = "D:\\story.txt";
FileReader fileReader = null;
int readLen = 0;
char[] buf = new char[8];
try {
fileReader = new FileReader(filePath);
//循环读取使用read(buf),返回的是实际读取到的字符数
//如果返回-1,说明文件结束
while ((readLen = fileReader.read(buf)) != -1) {
System.out.print(new String(buf, 0, readLen));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fileReader != null) {
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}


标签:try,fr,Java,read,FileReader,char,读入,fileReader,基本操作
From: https://blog.51cto.com/u_15880918/5860084

相关文章

  • JavaScript语法-与html结合方式、注释和数据类型
    JavaScript语法-与html结合方式与HTML结合方式:1、内部JS:定义<script>,标签体内容就是js代码2、外部JS:定义<script>,通过src属性引入外部的js文件注意:1、<script>可以......
  • Java 数组与ArrayList的互转
    数组转List数组转其他,都要借助​​Arrays​​工具类:如果是引用类型数组,则可以直接用​​Arrays.asList​​;如果是基本类型数组,则要先转为​​Arrays.stream​​:引用类型数......
  • Java技能树评测
    慢慢的变优秀是我的清醒​​......
  • JavaScript语法变量一元运算符以及算数和比较运算符
    JavaScript-语法-变量-一元运算符运算符:一元运算符:只有一个运算数的运算符++  --  +(正号)++  --  :自增(自减)++(--)......
  • java异常机制和File类
    Error类用于描述java虚拟机无法解决的严重错误,通常无法编码解决。如:JVM垮掉了Exception用于描述因编程错误或者偶然外在因素导致的轻微错误,通常可以通过编码解决。如0作为......
  • java线程
    1.线程的历史单进程人工切换-纸带机CPU利用率不高,CPU在等人切换纸带.多进程批处理-多个任务批量执行ABCDE5个任务(一个QQ,一个微信,一个传奇,一个QQ音乐,一个WP......
  • Java新特性(1):Java 9和Java10
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 自从Java在2009年被Oracle收购之后,就不再开源,除了Oracle官方发布的版本之外,还有OpenJDK版本,这两者的区别可以自行找某度......
  • 牛客java基础语法在线编程-知识点小结(待完善)
    知识点小结一、输入输出Scanner类Scanner类在java.util包下,导包格式如下:importjava.util.Scanner;使用示例:importjava.util.Scanner;classMain01{publ......
  • LiquibaseException java.lang.ClassCastException: class java.time.LocalDateTime c
      https://forum.liquibase.org/t/liquibaseexception-java-lang-classcastexception-class-java-time-localdatetime-cannot-be-cast-to-class-java-lang-string/5059......
  • JAVA IO流
    纯文本字符流比字节流效率高.1.这个理解的特别好:http://t.zoukankan.com/liaozuheng-p-13046873.html2.节点流与处理流的介绍:https://blog.csdn.net/wcg920212/article/d......