IO---字节流

IO流: 用于读写文件中的数据(可以读写文件,或网路中的数据) 那们今天我们就来了解一下其中的字节流

  • 1

FileOutputStream:

操作本地文件的字节输出流,可以把程序的数据写到本地文件中.

书写步骤:

1.创建字节流输出对象

ini 复制代码
FileOutputStream fis = new FileOutputStream("C:\Users\86187\IdeaProjects\IO\.idea");
引号中也可以传递一个File对象

其中创建的时候会报错,直接alt+enter抛出异常就行了

如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

如果文件已经存在则会清空文件

2.写数据

css 复制代码
fis.write(97);
写出为a

write方法的参数是整数,但实际上写到本地文件中的是整数在ASCLL对应的字符

3.释放资源:

go 复制代码
fis.close();

如果不释放资源的话那么文件就会一直被占用,那么从资源管理器那边就会显示文件处于打开状态.

所以每次使用完流之后都要释放资源

对于写入数据,一次传一个太麻烦了,而传入一个字节流数组会快很多

ini 复制代码
FileOutputStream fis = new FileOutputStream("C:\Users\86187\IdeaProjects\IO\.idea\aa");
String s="zhangsanhaoshuai";
byte[] bytes = s.getBytes();
fis.write(bytes);
fis.close();

因为writer要传入的是整型的数据,那么要将字符串改为数组用getbytes方法转换

对于第三种方法是数组的部分传入,其中的off代表获取的起始索引,len代表传入的长度

换行和续写 在传入的时候默认是不会换行的,而我们可以在传入字符串的时候传入\r\n,就可以达到换行的要求了

ini 复制代码
String s="zhangsan\r\nhaoshuai";

在我们每次调用输出流的时候都是创建一个新的或者覆盖原来的,那么我们怎么才能续写呢?

在创建的时候,传递参数中

第一个是File路径,却第二个是个false

深一步的了解就知道第二个是续写的开关当我们只传递路径的时候,默认第二个就是false 要想续写要自己手动传入true

FileInputStream

ini 复制代码
FileInputStream fis = new FileInputStream("C:\Users\86187\IdeaProjects\IO\.idea\aa");
System.out.println((char)fis.read());
fis.close();

其中传递路径的时候路径一定要是存在的,应为输入流只读,如果不存在还创建的话,读一个空文件又有什么意义呢?

而read方法就想之前学的迭代器中next一样,只读一个然后跳到下一个只不过它传递的是int类型的(字符串的ASCLL表中对应的)我们还得用强转才能打印哦,到了文件末尾了返回的是-1 那么我们就能够遍历文件的内容了

csharp 复制代码
int b;
while ((b=fis.read())!=-1){
    System.out.print((char)b);
}

一次读一个还是很麻烦所以这个也可以一次读一个数组

这样读入的速度就会快很多了

ini 复制代码
int b;
byte[] bytes = new byte[1];
while ((b=fis.read(bytes))!=-1){
    String s=new String(bytes);
    System.out.print(s);
}

在new string中传递bytes是把它转为字符串

相关推荐
考虑考虑7 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天11 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源