Java IO流(二)-字节流输入流
2024-01-07 22:51:36
1.字节输入流
1.1 字节输入流介绍
-
字节输入流类
- InputStream类 : 字节输入流最顶层的类 , 抽象类
— FileInputStream类 : FileInputStream extends InputStream
- InputStream类 : 字节输入流最顶层的类 , 抽象类
-
构造方法
- public FileInputStream(File file) : 从file类型的路径中读取数据
- public FileInputStream(String name) : 从字符串路径中读取数据
-
步骤
- 创建输入流对象
- 读数据
- 释放资源
package javaio.in.demo1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*
字节输入流写数据快速入门 : 一次读一个字节
第一部分 : 字节输入流类
InputStream类 : 字节输入流最顶层的类 , 抽象类
--- FileInputStream类 : FileInputStream extends InputStream
第二部分 : 构造方法
public FileInputStream(File file) : 从file类型的路径中读取数据
public FileInputStream(String name) : 从字符串路径中读取数据
第三部分 : 字节输入流步骤
1 创建输入流对象
2 读数据
3 释放资源
*/
public class FileInputStreamDemo1 {
public static void main(String[] args) throws IOException {
// 创建字节输入流对象
FileInputStream fis=new FileInputStream("aaa.txt");
// 读数据 , 从文件中读到一个字节
// 返回的是一个int类型的字节
// 如果想看字符, 需要强转
int by = fis.read();
System.out.println((char)by);
fis.close();
}
}
1.2 字节输入流读取多个字节
public class FileInputStreamDemo2 {
public static void main(String[] args) throws IOException {
// 创建字节输入流对象
FileInputStream fis=new FileInputStream("aaa.txt");
int by;
while ((by=fis.read())!=-1){
System.out.println((char)by);
}
//释放资源
fis.close();
}
}
1.3 案例
public class FileInputStreamDemo3 {
public static void main(String[] args) throws IOException {
//创建字节流输入对象
FileInputStream fis =new FileInputStream("D:\\Apache24\\htdocs\\brawlive\\site\\upload\\images\\202203\\29\\1648532403_284454_max.jpg");
//创建字流输出流对象
FileOutputStream fos = new FileOutputStream("copy.jpg");
int by;
while ((by=fis.read())!=-1){
fos.write(by);
}
//释放资源
fis.close();
fos.close();
}
}
1.4 异常的捕捉处理
JDK7版本之前处理方式 : 手动释放资源
public class FileInputStreamDemo4 {
public static void main(String[] args) {
FileInputStream fis =null;
FileOutputStream fos =null;
try{
//创建字节流输入对象
fis =new FileInputStream("D:\\Apache24\\htdocs\\brawlive\\site\\upload\\images\\202203\\29\\1648532403_284454_max.jpg");
//创建字流输出流对象
fos = new FileOutputStream("copy.jpg");
int by;
while ((by=fis.read())!=-1){
fos.write(by);
}
}catch (IOException e){
e.printStackTrace();
}finally {
//释放资源
if(fis==null){
try {
fis.close();
}catch (IOException e){
e.printStackTrace();
}
}
//释放资源
if(fos==null){
try{
fis.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
JDK7版本优化处理方式 : 自动释放资源
- JDK7优化后可以使用 try-with-resource 语句 , 该语句确保了每个资源在语句结束时自动关闭。
简单理解 : 使用此语句,会自动释放资源 , 不需要自己在写finally代码块了
public class FileInputStreamDemo5 {
public static void main(String[] args) {
try (
//创建字节流输入对象
FileInputStream fis =new FileInputStream("D:\\Apache24\\htdocs\\brawlive\\site\\upload\\images\\202203\\29\\1648532403_284454_max.jpg");
//创建字流输出流对象
FileOutputStream fos = new FileOutputStream("copy.jpg");
) {
// 一次读写一个字节
int by;
while ((by = fis.read()) != -1) {
fos.write(by);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.5字节输入流一次读一个字节数组
FileInputStream类 :
- public int read(byte[] b) : 从输入流读取最多b.length个字节的数据, 返回的是真实读到的数据个数
public class FileInputStreamDemo6 {
public static void main(String[] args) throws IOException {
// 创建字节输入流对象
FileInputStream fis = new FileInputStream("aaa.txt");
byte[] bys = new byte[3];
int len;
while ((len = fis.read(bys)) != -1) {
System.out.print(new String(bys , 0 , len));
}
fis.close();
}
}
文章来源:https://blog.csdn.net/lisus2007/article/details/135389757
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!