Java学习笔记之IO(二):InputStream输入字节流
2021/6/15 14:23:36
本文主要是介绍Java学习笔记之IO(二):InputStream输入字节流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.junit.Test; /* File类:用于描述一个文件或者文件夹的; 通过File对象我们可以读取文件或者文件夹的属性;如果需要读取文件的内容数据,则需要使用IO流技术; IO流:input output IO流解决问题:解决设备与设备之间的数据传输问题。 内存-->硬盘 硬盘-->内存 IO流分类: 按照数据的流向划分: 输入流: 输出流: 判断使用输入流还是输出流的依据: 以当前程序作为参照物,观察数据是流入还是流出;如果数据流出则使用输出流(output);如果数据流入则使用输入流(input); 按照处理的单位来划分: 字节流:字节流读出的都是文件中的二进制数据,读取到的二进制数据不会经过任何的处理; 字符流:字符流也是读取文件中的二进制数据,不过会把这些二进制数据转换成我们能认识的字符; 输入字节流: --------| InputStream:所有输入字节流的基类;抽象类; -----------| FileInputStream:读取文件数据的输入字节流; 使用FileInputStream读取文件数据的步骤: 1、找到目标文件(用File类表示); 2、建立数据的输入通道(创建输入字节流对象); 3、读取文件中的数据; 4、关闭输入流,释放资源; 问题:读取完文件中的数据之后,不关闭资源有什么影响? 如果不关闭资源,其他程序无法对该资源文件进行操作; */ public class Demo3 { // 使用read()方法直接读取数据 @Test public void test1() throws IOException{ // 1、找到目标文件:用File类表示; File file = new File("D:\\a.txt"); // 2、建立数据的输入通道:创建FileInputStream输入流对象 FileInputStream fileInputStream = new FileInputStream(file); // 声明一个变量,用于存储读取到的内容; int content = 0; // 3、读取文件中的数据;read():读取一个字节的数据;返回读取到的内容; while ((content = fileInputStream.read()) != -1){ // 读取到文件末尾返回-1 // 直接读取到的是字节数据,需要转换成字符数据; // 回车(\r)读取到的是13; 换行(\n)读取到的是10; 空格(" ")读取到的是32; // 此处转换只能转换字符数据;中文数据在此处转换成的是乱码; char c = (char)content; System.out.println("读取的数据为:" + content + "-" + c); } // 关闭输入流,释放资源; fileInputStream.close(); } // 使用缓冲数组 byte[] 读取数据;效率要比使用read()方法直接读取数据高很多; @Test public void test2() throws IOException{ // 1、找到目标文件 File file = new File("D:\\a.txt"); // 2、建立数据的输入通道 FileInputStream in = new FileInputStream(file); int len = 0; // 建立缓冲字节数组,存储读取到的数据;字节数组的长度一般为1024的倍数,与计算机的处理单位有关; // 理论上缓冲数组越大,效率越高; byte[] buf = new byte[1024]; // 将数据读取到缓冲字节数组中,返回读取数据的字节长度; while ((len = in.read(buf)) != -1){ System.out.println("读取数据的字节长度:" + len); // 将读取到的数据转换成字符串; String content = new String(buf, 0, len); System.out.println("读取到的数据:" + content); } // 关闭流,释放资源 in.close(); } }
这篇关于Java学习笔记之IO(二):InputStream输入字节流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)