26、IO流(只是小入门)
- 电脑硬件
- 2025-09-18 00:03:01

十三章:IO 流 一、File 类的使用
1、File 类的一个对象,代表一个文件或文件目录(俗称:文件夹)
2、File 类声明在 Java.io 包下面
相对路径:相较于某个路径下,指明的路径。 绝对路径:包含盘符在内的文件或文件目录的路径
File 中三种构造器:
File 类中的常用方法
13-2 IO 流原理及流的分类
I/O 是 Input/Output 的缩写 用于处理设备之间的数据传输
IO 流分类
以下的代码可以仔细看一看
package com.java4.kcw; import org.junit.Test; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /**一、流的分类 * 操作数据单位:字节流、字符流 * 数据的流向:流入流、流出流 * 流的角色:节点流、处理流 * * 二、流的体系结构 * 抽象基类 节点流 缓冲流 * InputStream FileInputStream BufferedInputStream * OutputStream FileOutputStream BufferedOutputStream * Reader FileReader BufferedReader * Writer FileWriter BufferedWriter * @author Jackson_kcw * @Time 2025-03-02 PM4:51 */ public class FileReaderWriterTest { //将这个 hello.txt的内容读入程序,并输出到控制台 //异常处理,为了保证流资源一定会被关闭,需要使用 try-catch-finally处理 //读入的文件一定要存在,否则就会报 FileNotFoundException @Test public void testFileReader() { FileReader fr= null; try { //1、实例化 File 类的对象,指明要操作的文件 File file=new File("hello.txt");//相较于当前 Module //2、提供具体的流 fr = new FileReader(file); //3、数据的读入 //read():返回读入的一个字符。如果达到文件末尾,返回-1 int data= fr.read(); while(data!=-1){ System.out.print((char)data); data=fr.read(); } } catch (IOException e) { throw new RuntimeException(e); } finally { //4、流的关闭操作 if(fr!=null){ try { fr.close(); } catch (IOException e) { throw new RuntimeException(e); } } } } /* **********************************************************************************************8 */ //对 read()操作升级:使用 read的重载方法 @Test public void testFileReader1() { FileReader fr= null; try { //1、File类的实例化 File file =new File("hello.txt"); //2、FileReader 流的实例化 fr = new FileReader(file); //3、读入的操作 //read(char[] cbuf) 返回每次读入 cbuf 数组中的字符的个数。如果达到文件末尾,返回-1 char [] cbuf=new char[5]; int len; while((len=fr.read(cbuf))!=-1){ for(int i=0;i<len;i++){ System.out.println(cbuf[i]); } } } catch (IOException e) { throw new RuntimeException(e); } finally { //4、资源关闭 if(fr!=null){ try { fr.close(); } catch (IOException e) { throw new RuntimeException(e); } } } } //从内存中写出数据到硬盘的文件里 /* 说明:1、输出操作,对应的 File 可以不存在,如果不存在,会自动创建文件 如果存在:如果流使用的构造器是 FileWriter(file,false):对原有文件的覆盖 如果流使用的构造器是 FileWriter(file,true):不会覆盖,而是原文件下面继续添加内容 */ @Test public void testFileWriter() { FileWriter fw= null; try { //1、提供 File 类的对象,指明写出到的文件 File file=new File("hello1.txt"); //2、提供 FileWriter 对象,用于数据的写出 //下面的地方 若构造器中有append 如果写 true 则在原有基础上添加,如果为 false 就会覆盖操作 fw = new FileWriter(file,true); //3、写出的操作 fw.write("I have a dream\n"); fw.write("Everyday is a new day!!!"); } catch (IOException e) { throw new RuntimeException(e); } finally { if(fw!=null){ //4、资源的关闭 try { fw.close(); } catch (IOException e) { throw new RuntimeException(e); } } } } @Test public void testFileReaderFileWriter(){ FileReader fr= null; FileWriter fw= null; try { //1、创建 File 类的对象,指明读入和写出的文件 File srcFile=new File("hello.txt"); File destFile=new File("hello2.txt"); //2、创建输入流和输出流的对象 fr = new FileReader(srcFile); fw = new FileWriter(destFile); //3、数据的读入和写出操作 char [] cbuf=new char[5]; int len;//记录每次读入到 cbuf 数组中的字符的个数 while((len=fr.read(cbuf))!=-1){ //每次写出 len 个字符 fw.write(cbuf,0,len); } } catch (IOException e) { throw new RuntimeException(e); } finally { //4、关闭流资源 if(fr!=null){ try { fr.close(); } catch (IOException e) { throw new RuntimeException(e); } } if(fw!=null){ try { fw.close(); } catch (IOException e) { throw new RuntimeException(e); } } } } }13-3 转换流
1、转换流:属于字符流
InputStreamReader:将一个字节的输入流转换为字符的输入流
OutputStreamWriter :将一个字符的输出流转换为字节的输出流
2、作用:提供字节流与字符流之间的转换
3、解码: 字节、字节数组—>字符数组、字符串
编码:字符数组、字符串—>字节、字节数组
总结
因为时间的关系,这部分的内容我主要是跳过,只了解第一种,等以后遇到这方面的问题时,再去具体去处理以及学习
26、IO流(只是小入门)由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“26、IO流(只是小入门)”