当前位置: 首页 > news >正文

Java流【全】

IO流分类

AA、根据数据流动的方向:输入流和输出流

如:打开一个新的记事本并输入一些内容,而这些内容是在内存里面的,没有存储到磁盘中,当点击保存之后,数据才会从内存流向磁盘;当双击打开磁盘文件的时候,数据才会从磁盘流向内存【数据存储有一个特点:内存一旦断电数据消失,磁盘永久保存】如何选择使用输入流或者输出流?【程序角度来说:Ctrl+s当内存流向磁盘[输出流],双击打开磁盘文件磁盘流向内存[输入流]

什么是IO?

I(InputStream)O(OutputStream)指的就是输入流和输出流

生活中遇到常见的流:物流、人流、车流、水流、电流……【共同点:强调一个东西,从一个地方到另一个地方】

BB、根据数据流动的类型:字节流和字符流

数据流动的单位是字节就叫做字节流

数据流动的单位是字符就叫做字符流

IO的四大抽象流(都是抽象类):

InputStream:所有字节输入流的基类,其中API里面无提供专门获取对象的方法,可以自己写一个子类继承它,或者直接找它已有的子类,new一个它的子类就能用InputStream里面的方法

这里操作的是文件,就选一个相近一点的使用InputStream下面的子类——FileInputStream

FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境
FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader

字段摘要【无】

构造方法摘要

FileInputStream(File file)

	通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定根据指定的文件**对象**创建字节输入流对象

FileInputStream(String name)

	通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定根据指定的文件**路径名**创建字节输入流对象
public class InputStremFileInputStremDemo {public static void main(String[] args) throws FileNotFoundException {//该构造需要抛异常,可进入FileInputStream构造里面看//创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("xxxxxx.txt");//不存在的文件System.out.println(fileInputStream);//文件不存在,报错//Exception in thread "main" java.io.FileNotFoundException: xxxxxx.txt (系统找不到指定的文件。)}
}

方法摘要

int read()

	从此输入流中读取一个**数据字节**,下一个数据字节无则返回 -1一次性只能读取到一个字节,返回的是ASCII值,如果读到末尾返回 -1

在这里插入图片描述
先创建a.txt文件并写入内容保存,再使用字节输入流读取出来

从文件读取出来是对应的数字public class InputStremFileInputStremDemo {public static void main(String[] args) throws IOException {//创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("D:/hh/a.txt");//读取第一个字节int readK = fileInputStream.read();//read方法需要抛异常System.out.println(readK);//读取第二个字节int readS = fileInputStream.read();System.out.println(readS);//读取第三个字节int readD = fileInputStream.read();System.out.println(readD);//读取第四个字节int readJ = fileInputStream.read();System.out.println(readJ);//读取第五个字节int read = fileInputStream.read();System.out.println(read);/*** 107* 115* 100* 106* -1*///关闭IO流fileInputStream.close();}
}从文件读取出来是对应的内容public class InputStremFileInputStremDemo {public static void main(String[] args) throws IOException {//创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("D:/hh/a.txt");//读取第一个字节int read = fileInputStream.read();//read方法需要抛异常System.out.println((char) read);//读取第二个字节read = fileInputStream.read();System.out.println((char)read);//读取第三个字节read = fileInputStream.read();System.out.println((char)read);//读取第四个字节read = fileInputStream.read();System.out.println((char)read);//读取第五个字节read = fileInputStream.read();System.out.println(read);//无对应内容/*** k* s* d* j* -1*///关闭IO流fileInputStream.close();}
}

循环读取字节——模式1【这里的缺陷:一次性只能装一个数据,因为read()方法只能一次性读取一个字节】

public class InputStremFileInputStremDemo {public static void main(String[] args) throws IOException {//创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("D:/hh/a.txt");//一次性读取一个字节int read ; //这里不是没有初始化,没报错的原因,因为其实下面使用已经赋值了,局部变量必须会赋值,不然会提示Variable 'read' might not have been initialized//定义一个可变字符串,来拼接字符StringBuilder stringBuilder = new StringBuilder();//循环读取字节,把读取出来的字符赋值给read,然后以read去判断是否等于-1//这里不确定循环的次数所以不能用for循环,所以不知道循环次数都用whilewhile ((read = fileInputStream.read()) != -1){stringBuilder.append((char) read);//System.out.println((char)read);/*** k* s* d* j*/}System.out.println(stringBuilder);//ksdj//关闭IO流fileInputStream.close();}
}

常识:一个英文字母占一个字节

int read(byte[] b)

	从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中一次性能读取多个字节,返回读取字节的个数,如果读到末尾返回 -1

循环读取字节——模式2【这里的缺陷:一次性能装多个数据,因为read(byte[] b)方法能一次性读取多个字节】

public class InputStremFileInputStremDemo {public static void main(String[] args) throws IOException {//创建字节输入流对象FileInputStream fileInputStream = new FileInputStream("D:/hh/a.txt");//一次性读取多个字节byte[] bytes = new byte[4];//如果这里为7,实际只有四个字节,会显示null//把读取出来的字节放到bytes数组里面fileInputStream.read(bytes);System.out.println(Arrays.toString(bytes));//[107, 115, 100, 106]/*** String(byte[] bytes)* 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String*/System.out.println(new String(bytes));//ksdj//关闭IO流fileInputStream.close();}
}有中文可以输出中文public class InputStremFileInputStremDemo {public static void main(String[] args) throws IOException {//创建字节输入流对象FileInputStream fileInputStream = 

相关文章:

  • 【计网】第六章(网络层)习题测试
  • Cesium快速入门到精通系列教程三:添加物体与3D建筑物
  • linux系统中防火墙的操作
  • 进阶日记(一)大模型的本地部署与运行
  • vue3常用组件有哪些
  • BFS入门刷题
  • STM32——CAN总线
  • 飞牛fnNAS存储空间模式详解
  • P4549 【模板】裴蜀定理
  • Linux --进程状态
  • 利用多进程定时播放,关闭音乐播放器
  • 2025 年 AI 技能的全景解析
  • Hilbert曲线
  • XCPC 常用技巧
  • 中国风展示工作总结商务通用PPT模版
  • Python实例题:Python3实现图片转彩色字符
  • Markdown笔记
  • OneForAll 使用手册
  • 第九天:java注解
  • vue3路由跳转的三种方式
  • 哪些网站做外贸效果好/宁波seo公司排名榜
  • 鹰潭律师网站建设/中国seo网站
  • 做行政关注什么类型的网站/超级外链发布工具
  • 山东青岛网站建设公司哪家专业/整站快速排名优化
  • 网站开发是BS架构吗/搜索关键词优化排名
  • 网站建设论文3000字范文/营销策划公司排行榜