package com.study.srv.demo17;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* @author Wen先森
* @version 1.0
* @date 2022/5/12 10:40
*
* FileInputStream输入流
*/
public class Demo04 {
public static void main(String[] args) {
}
/**
* 使用FileInputStream的read方法读取的是单个字节,效率比较低。
* 此时我们可以使用read(byte[] b)读取文件
*/
@Test
public void readFile(){
String path="D:\\new2.txt";
FileInputStream fileInputStream=null;
int read=0;
try {
//创建FileInputStream对象,用于读取文件
fileInputStream = new FileInputStream(path);
//FileInputStream中的read方法
//从该输入流读取一个字节的数据。如果没有输入可用,此方法将被阻止。
//如果返回-1,表示已经到末尾,表示读取完毕
while ((read=fileInputStream.read())!=-1) {
System.out.print((char) read);//将int转为char显示
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//最后一定要关闭文件流 ,释放资源
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 使用read(byte[] b)方法读取文件
*/
@Test
public void readFile2(){
String path="D:\\new2.txt";
FileInputStream fileInputStream=null;
//字节数组
byte[] bytes = new byte[3];//一次读取3个字节
int read=0;
try {
//创建FileInputStream对象,用于读取文件
fileInputStream = new FileInputStream(path);
//FileInputStream中的read(byte[] b)方法
//从该输入流读取最多b.length字节的的数据到字节数组。此方法将被阻塞,直到某些输入可用
//如果返回-1,表示已经到末尾,表示读取完毕
//fileInputStream.read(bytes)读取正常,返回的是实际读取到的字节数
while ((read=fileInputStream.read(bytes))!=-1) {
//但是这样写会被偏移量所限制,
System.out.print(new String(bytes,0,read));
//也可以直接new String对象
String str=new String(bytes);
System.out.print(str);
//将int转为char显示
}
} catch (IOException e) {
e.printStackTrace();
}finally {
//最后一定要关闭文件流 ,释放资源
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Java-Io流,练习



Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO流的概念 IO流在Java中分为两大类:输入流(Input Stream)和输出流(Output Stream)。输入流用于从源(如文件、网络连接等)读取数据,而输出流则用于向目的地(如磁盘、显示器、网络等)写入数据。根据处理的数据单位,流又分为字节流(Byte Stream)和字符流(Character Stream)。 二、字节流与字符流 1. 字节流:Java的`java.io`包中提供了处理字节流的类,如`InputStream`和`OutputStream`作为所有字节输入流和输出流的基类。它们的子类如`FileInputStream`和`FileOutputStream`分别用于文件的读写。 2. 字符流:对于处理文本数据,Java提供了`Reader`和`Writer`作为字符输入流和输出流的基类。` FileReader`和`FileWriter`是它们的典型应用,专用于文件的字符读写。 三、流的方向 Java的IO流分为四种基本类型,按照数据流动方向可分为: - 输入流(InputStream/Reader):用于数据的读取。 - 输出流(OutputStream/Writer):用于数据的写入。 - 双向流(如PipedInputStream/PipedOutputStream,PipedReader/PipedWriter):可以同时进行读写操作。 四、缓冲流(Buffered Stream) 为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流(Wrapper Stream) 字符流与字节流之间可以通过转换流进行互转。`InputStreamReader`和`OutputStreamWriter`就是这样的转换流,它们分别将字节流转换为字符流,反之亦然。 六、对象序列化流(Object Stream) Java还提供了一种特殊的流,即对象流,用于对象的序列化和反序列化。`ObjectOutputStream`用于写入对象到流中,`ObjectInputStream`则用于从流中读取对象。 七、文件操作练习 在你给出的"demo17"和"task09"这两个文件中,很可能是包含了针对文件读写的实例代码。例如,可能涉及使用`FileInputStream`和`FileOutputStream`进行简单的文件复制,或者使用`BufferedReader`和`BufferedWriter`进行高效的文本文件读写。通过运行这些示例,你可以直观地理解IO流的工作原理,并学习如何在实际项目中运用。 总结来说,Java的IO流是一个庞大且重要的主题,涵盖了数据的输入、输出、缓冲、转换等多个方面。对于初学者而言,理解和掌握IO流的基本概念、分类以及常用类的用法是至关重要的。通过实践练习,可以加深对IO流的理解,提高编程能力。



































- 1






















- 粉丝: 121
- 资源: 13
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于python的企业物流管理系统.zip
- 基于python的人脸表情识别的系统设计与实现LW.zip
- 基于python的图象去雾算法研究和实现_.zip
- 基于Python计算机视觉答题卡的设计与实现.zip
- 基于Python二维码生成算法研究和实现.zip
- (源码)基于Python的OpenEuler OpenStack环境管理工具集.zip
- 基于大数据反电信诈骗管理系统的设计与实现.zip
- 基于Python语言的某在线中药店销售数据统计与分析.zip
- 基于Python旅游城市关键词分析LW.zip
- 基于机器学习新闻文本分类系统LW.zip
- 基于卷积神经网络的车牌识别仿真.zip
- 基于爬虫的贵州菜价可视化系统的设计与实现LW.zip
- 基于人脸识别智能化小区门禁管理系统的需求(5).zip
- 基于深度学习的安全帽佩戴检测.zip
- 基于深度学习的车俩特征分析系统LW.zip
- 基于深度学习的红枣识别算法的设计与实现.zip



评论10