java复习第8天---8.1---IO流---字节流
目录
文章目录
内容
1、IO流概述
1.1、 词语解析
-
- I:input 输入
- O:output 输出
- 流:数据(字节,字符)1字符=2个字节 1字节=8个二进制位
1.2、数据流
- 图示1.2-1:
- 解析:
- 数据流的流向,以程序(java)运行所在内存区为参照;从硬盘或者网络终端读入数据为输入;从内存把数据写入硬盘或者网络终端数据为输出
- java中流表示数据的意思
1.3、java中IO流框架
- 图示1.3-1:
- 分类
- 流向:输入流和输出流
- 数据单位:字节流和字符流
- 功能划分:文件流、缓存流、转换流、打印流等
1、字节流
一切文件数据(文本、图片、音视频等)在存储时,都是以二进制形式保存,一个一个字节,传输时也是如此。所有,字节流可以传输任意文件数据。
1.1、OutputStream
Outputstream为字节输出流的父类,把信息传输到指定位置,提供基本的功能方法:
修饰符 | 返回值类型 | 方法名 | 参数列表 | 描述 |
---|---|---|---|---|
public | void | close | 关闭此输出流并释放与此流相关的系统资源 | |
public | void | flush | 刷新输出流并强制任何缓冲区字节写出 | |
public | void | write | byte[] b | 把b.length字节从指定的字节数组写入此输出流 |
public | void | write | byte[] b, int off, int len | 把len字节从指定字节数组b的偏移量off处开始写入此输出流 |
public abstract | void | write | int len | 将指定的字节写入此输出流 |
1.1.1、FileOutputStream
FileOutputStream 文件输出流,用于数据写入文件当中。
- 常用构造方法
参数类别 | 描述 |
---|---|
File file | 创建文件输出流到以写入File对象对应的文件中 |
File file, boolean append | 创建文件输出流以追加方式写入由指定的 File对象表示的文件 |
String name | 创建文件输出流以写入指定名称的文件 |
String name, boolean append | 创建文件输出流以追加方式写入指定名称的文件 |
-
使用步骤
- 创建文件输出流对象,指定写入文件
- 调用write方法把数据写入文件
- 调用close方法关闭输出流释放相关的系统资源
-
示例1.1.1-1:
package io.FileOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class TestFileOutputStream1 { public static void main(String[] args) throws IOException { String path = "f:\\test\\a.txt"; FileOutputStream fos = new FileOutputStream(path); int b = 97; fos.write(b); fos.close(); } } 测试结果:自己测试
-
示例1.1.1-2:写入多字节数据
package io.FileOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class TestOutputStream2 { public static void main(String[] args) throws IOException { String path = "f:\\test\\a.txt"; FileOutputStream fos = new FileOutputStream(path); String str = "欢迎入坑JAVA!"; fos.write(str.getBytes()); fos.close(); } } 测试结果:自己测试
-
1.1.1-3:向a.txt中换行追加内容
package io.FileOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class TestOutputStream3 { public static void main(String[] args) throws IOException { String path = "f:\\test\\a.txt"; FileOutputStream fos = new FileOutputStream(path, true); String str = "《JAVA从入门到放弃》"; fos.write("\r\n".getBytes()); fos.write(str.getBytes()); fos.close(); } } 测试结果:自己测试
-
总结:
- 构造方法中的文件如果存在,且append不指定,则新写入的内容覆盖原有内容
- 构造方法中的文件如果不存在,则新建以参数名为名字的文件名
- \r\n为windows中的回车和换行符
1.2、InputStream
InputStream 为自己输入的父类,定义了字节输入流共同的基本功能方法:
修饰符 | 返回值类型 | 方法名 | 参数列表 | 描述 |
---|---|---|---|---|
public | void | close | 关闭此输入流并释放与此输入流向关联的系统资源 | |
public abstract | int | read | 从输入流中读取一个字节数据 | |
public | int | read | byte[] b | 从输入流中读取b.length个字节的数据存入指定自己数组b中,返回实际读取的字节数 |
1.2.1、FileInputStream
FileInputStream 文件输入流,用于从文件中读取数据。
- 常用构造方法
参数列表 | 描述 |
---|---|
File file | 通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 |
String name | 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。 |
-
示例1.2.1-1:读取a.txt中的内容并显示
package io.inputstream.fileinputstream; import java.io.FileInputStream; import java.io.IOException; public class TestFileInputSteam1 { public static void main(String[] args) throws IOException { String path = "f:\\test\\b.txt"; FileInputStream fis = new FileInputStream(path); byte[] b = new byte[1024]; int len; while((len = fis.read(b)) != -1) { for(byte x: b) System.out.print((char)x); } fis.close(); } } 测试结果: package io.inputstream.fileinputstream; import java.io.FileInputStream; import java.io.IOException;
1.3、 字节流文件复制
-
需求:把a.txt文件内容复制到aa.txt,用字节流复制
-
代码1.3-1:
package io.ByteStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) throws IOException { String source = "f:\\test\\a.txt"; String dest = "f:\\test\\aa.txt"; fileCopy(source, dest); } public static void fileCopy(String source, String dest) throws IOException { FileInputStream fis = new FileInputStream(source); FileOutputStream fos = new FileOutputStream(dest); byte[] b = new byte[1024]; int len; while((len = fis.read(b)) != -1) { fos.write(b, 0, len); } fis.close(); fos.close(); } } 测试结果: a.txt 欢迎入坑JAVA!《JAVA从入门到放弃》 《JAVA从入门到放弃》 aa.txt 欢迎入坑JAVA!《JAVA从入门到放弃》 《JAVA从入门到放弃》
后记 :
本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785
前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA