File与IO流之字节流
笔记哥 /
05-28 /
40点赞 /
0评论 /
406阅读
## FileOutputStream
1. 创建字节输出流对象`FileOutputStream fl =new FileOutputStream()`
- 传入的参数可以是字符串路径或者File对象(实际上如果传入字符串也会在内部创建File对象)
- 如果文件不存在会在创建一个文件,但是必须保证其父级路径是存在的,这个和File是相似的
- 如果文件存在,则会清空文件,你可以选择传入第二个参数(boolean),让对象是可以续写的
1. 写数据`fl.write(92)`
- 写入整数,显示对应ascii码值
- 如果想一口气将字符写入文件:
```java
String str="hello World!"
byte byte1[]=str.getBytes();
fl.write(byte1);
```
- 可以写入byte数组,并给出起始位置和总长度(可以不给)
- 如果想让数据换行可以传入:
```java
String str="\n"
byte byte1[]=str.getBytes();
fl.write(byte1);
```
1. 释放资源
- 使用完都要进行释放,相当于解除对文件的占用
## FileinputStream
1. 创建字节输入对象`FileInputStream fl =new FileInputStream()`
- 如果文件不存在,直接报错
1. 读取数据`fl.read()`
- 读取字节数据,将数据进行返回,且读取一次数据,就移动到下一个
- 读到文件末尾方法返回-1
1. 释放资源
## 练习:复制粘贴,并显示花费时长(毫秒)
```java
package Java_test;
import java.io.*;
public class Test {public static void main(String[] args) throws IOException{ File fl =new File(".\\5.jpg"); FileInputStream infile = new FileInputStream("C:\\Users\\Lenovo\\Pictures\\5665.jpg"); FileOutputStream outfile = new FileOutputStream(fl); int b=0; long start = System.currentTimeMillis(); while ((b = infile.read()) != -1) { outfile.write(b); } System.out.println("复制粘贴完成"); long end = System.currentTimeMillis(); System.out.println("总共花费时长:" + (end - start) + " 毫秒"); outfile.close(); infile.close();}
}
```
以上练习可以看出,一个字节一个字节进行读取速度会非常慢,为了更快的进行数据传输我们可以用`int len = outfile.read(bytes)`其中,`bytes`是字节型字符串,这行代码会读取文件中的数据,并尽可能的填满数组,读取的数据会从头对数组进行覆盖,如果覆盖不完全会使后面出现多余数据,其中数组长度最好是1024的整数倍
所以,我们可以利用他的返回值,`len`这个指的是读取数据的长度,`System.out.println(new String(bytes,0,len));`这个String是将从0开始`len`长度的数据转成字符串,并进行输出
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/3793
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利
- 相关联分享
- [设计模式/Java] 设计模式之工厂方法模式
- 【对称加密】DES与AES算法详解及Java实现
- 历数Java虚拟机垃圾回收GC收集器的缺点剖析
- Java虚拟机代码是如何一步一步变复杂且难以理解的?
- 产品中不同客户端请求下的 IP 归属地分析方法
- 在java中为什么重写equals一定也要重写hashCode方法?
- 设计模式之门面模式(外观模式)的原理、组成
- Java中如何优雅的处理日期
- 启用 Java AOT 编译打包 Solon 项目(Solon AOT)
- YtyMark-java 富文本编辑器分享(以开源)
- Java 21新特性有哪些?
- Excel 高性能导出方案推荐(JAVA)
- Java AI(智能体)编排开发就用 Solon Flow
- Spring 中@Autowired,@Resource,@Inject 注解实现原理
- JAVA 24 环境安装与配置教程
- File与IO流之字节流