我是靠谱客的博主 优秀眼神,最近开发中收集的这篇文章主要介绍字节输入流(FileInputStream)字节输入流,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

字节输入流

FileInputStream继承InputStream,所有后缀为InputStream的类都属于字节输入流

做字节输入流的步骤:

1.铺设管道

2.确保有水厂,水厂里面有数据

3.打开水龙头,fis.read()

对输入流的理解:

FileInputStream相当于一个管道,他的构造方法里面的参数相当于水厂,水厂里面有水(数据)

如果不确定一个文件是否存在或者一个文件里面是否有数据,就使用FileInputStream中参数为File类型的构造方法,通过判断File对象是否存在文件(file.exiats())并且判断该文件里面是否有数据(file.length())来铺设管道,也就是创建管道对象,如以下代码:


File f = new File("H:\IO流实验\test.txt");
if (f.exists()&&f.length()>0) {
FileInputStream fis1 = new FileInputStream(f);
}

注意:当文件中包含中文的时候,出现乱码是因为管道的read()方法是从输入流中一个一个读取字节,一个中文在gbk编码表里代表2个字节,也就是read()方法读完半个中文(一个字节)就输出了,从而造成乱码

代码实现输入流应用

public class Test {
public static void main(String[] args) {
try {
//铺设管道方法一:(FileInputStream构造方法是传入File类型的参数,
// 当不知道该文件是否存在,是否有数据的时候使用
/*
File f = new File("H:\IO流实验\test.txt");
if (f.exists()&&f.length()>0) {
FileInputStream fis1 = new FileInputStream(f);
}
*/
//1在文件和程序之间铺设管道(FileInputStream)
FileInputStream fis2 = new FileInputStream("H:\IO流实验\test.txt");
//2开水龙头(fis.read())一个一个字节的读,
//乱码原因:
// 因为一个中文在gbk编码中占2个字节,read()是一个一个字节读取,所以中文读了一半就输出了,造成乱码
int ch = 0;
while ((ch = fis2.read())!=-1){
System.out.print((char)ch);
}
//3关水龙头(关闭流)
fis2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

最后

以上就是优秀眼神为你收集整理的字节输入流(FileInputStream)字节输入流的全部内容,希望文章能够帮你解决字节输入流(FileInputStream)字节输入流所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部