Java:字节流 文件输出与读入方法 并 实现文件拷贝

文章目录

    • 字节 流
      • FileOutputStream
      • 换行 与 续写
      • FileInputstream
      • 实现 文件拷贝(字节数组 读入方法)
      • 字节流 编码

字节 流

FileOutputStream

  1. 创建对象,指定位置(产生数据传输通道)
    参数可以是File对象,也可以是路径
    如果文件不存在,且父级路径正确,会新建文件
    如果文件存在,会清空文件
  2. 写出数据
    ASCII对应 字符
    可以传入字节流,指定起始位置,长度
  3. 释放资源
    解除资源占用
package com.io.testdemo1;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class test1 {public static void 	main(String[] args) throws IOException {// 创建对象,指定位置(产生数据传输通道)FileOutputStream fos = new FileOutputStream("src/aaa.txt");// 写入数据fos.write(97);byte[] bytes = {97, 98, 99, 100};fos.write(bytes);fos.write(bytes, 0, 2);// 释放资源fos.close();}
}

在这里插入图片描述

换行 与 续写

换行:
write(“\r\n”) 即可 linux只写\n即可 mac写\r
\r 表示回车 \n 表示换行
早期\r表示,回到此行开头,\n才表示换行,一直沿用了下来。

续写: 在输出流对象的第二个参数中,加入true,表示打开续写开关。

例子:

package com.io.testdemo1;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class test1 {public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("src/aaa.txt", true);// 写入数据String str1 = "hello";byte[] bytes1 = str1.getBytes();fos.write(bytes1);// 写入换行String str2 = "\r\n";byte[] bytes2 = str2.getBytes();fos.write(bytes2);fos.close();}
}

运行两次的结果:
在这里插入图片描述

可以发现第二次续写了,并没有清空,同时换行了。

FileInputstream

与输出相似。

  1. 创建对象(搭建桥梁)
    如果文件不存在则直接报错
  2. 读入(返回值为int)
    一次读一个字节,ASCII对应的数字 (每次读相当于一次指针的移动)
    读到末尾时返回-1
  3. 释放资源
package com.io.testdemo2;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class test2 {public static void main(String[] args) throws IOException {// 创建对象FileInputStream fis = new FileInputStream("src/aaa.txt");// 循环 读入int b; // 用变量去接收,要是条件和循环体内都read会跳两次while ((b = fis.read()) != -1) {System.out.print((char)b);}// 释放资源fis.close();}
}

运行结果与文件内容相同,说明成功读取成功:
在这里插入图片描述
在这里插入图片描述

实现 文件拷贝(字节数组 读入方法)

read可以传入byte数组,这样可以一次读入一个字节数组大小,速度会快很多,大小最好为1024的整数倍。

注意:返回值变成了长度,读完会返回-1。

将aaa.txt拷贝bbb.txt:

package com.io.copydemo;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class test3 {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("src/aaa.txt");FileOutputStream fos = new FileOutputStream("src/bbb.txt");byte[] bytes = new byte[4096];int len;while ((len = fis.read(bytes)) != -1) {fos.write(bytes, 0, len);}fis.close();fos.close();}
}

运行结果:
在这里插入图片描述

字节流 编码

最好不要用字节流取读取文本文件。
编码和解码要统一。

idea默认utf-8,字母1字节,汉字3字节
eclipse默认jbk,字母1字节,汉字2字节

package com.io;import java.io.UnsupportedEncodingException;public class demo4 {public static void main(String[] args) throws UnsupportedEncodingException {String str = "abc你好";byte[] bytes = str.getBytes("GBK");String res1 = new String(bytes, "GBK");String res2 = new String(bytes, "UTF-8");System.out.println(res1); // abc你好System.out.println(res2); // abc���}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特征驱动开发

FDD 方法来自于一个大型的新加坡银行项目。FDD 的创立者 Jeff De Luca 和 Peter Coad 分别是这个项目的项目经理和首席架构设计师。在 Jeff 和 Peter 接手项目时,客户已经经历了一次项目的失败,从用户到高层都对这个项目持怀疑的态度,项目组士…

mysql面试题——日志

一:为什么需要REDO日志 缓冲池可以帮助我们消除CPU和磁盘之间的鸿沟,checkpoint机制可以保证数据的最终落盘,然而由于checkpoint 并不是每次变更的时候就触发 的,而是master线程隔一段时间去处理的。所以最坏的情况就是事务提交后…

持续集成交付CICD:Jenkins配置Nexus制品发布

目录 一、实验 1.Jenkins配置Nexus制品发布 一、实验 1.Jenkins配置Nexus制品发布 (1)策略 发布其实就是下载制品,然后将制品发送到目标主机,最后通过脚本或者指令启动程序。 (2)安装Maven Artifact …

uniapp图片预览

用的是Uview组件库里面的 直接在页面写上&#xff1a; <u-album singleSize"100" :urls"[https://lxt.jingyi.icu/item.img]"></u-album> 这图片路径是我自己的 你们可以按照组件库里面的方法去实现

DataFrame的使用

查看数据类型及属性 # 查看df类型 type(df) # 查看df的shape属性&#xff0c;可以获取DataFrame的行数&#xff0c;列数 df.shape # 查看df的columns属性&#xff0c;获取DataFrame中的列名 df.columns # 查看df的dtypes属性&#xff0c;获取每一列的数据类型 df.dtypes df.i…

标准成本核算基础知识 – 了解间接费用成本流程 - Part4

原文地址&#xff1a;Basics of Standard Costing – Understanding overhead cost flow-Part 4 | SAP Blogs 这是我理解标准成本计算及其流程的另一篇文档的延续。 标准成本核算基础知识 - 了解成本构成结构 - 第 3 部分 管理费用是只能间接归因于产品的成本&#xff0c;例如…

react中使用react-konva实现画板框选内容

文章目录 一、前言1.1、API文档1.2、Github仓库 二、图形2.1、拖拽draggable2.2、图片Image2.3、变形Transformer 三、实现3.1、依赖3.2、源码3.2.1、KonvaContainer组件3.2.2、use-key-press文件 3.3、效果图 四、最后 一、前言 本文用到的react-konva是基于react封装的图形绘…

基础课20——从0-1客服机器人生命周期

温馨提示&#xff1a;篇幅较长&#xff0c;可点击目录查看对应节点。 1.机器人搭建期 搭建机器人包含&#xff1a;素材整理、问题提炼、相似问题补充、答案编辑、问题分配引擎等等步骤&#xff0c;不同厂商可能有所区别&#xff0c;但关键功能的实现离不开以下步骤。 1.1素材…

《形式语言与自动机理论(第4版)》笔记(三)

文章目录 [toc]前导《形式语言与自动机理论&#xff08;第4版&#xff09;》笔记&#xff08;一&#xff09;《形式语言与自动机理论&#xff08;第4版&#xff09;》笔记&#xff08;二&#xff09; 第四章&#xff1a;正则表达式4.1|启示4.2|正则表达式的形式定义正则表达式性…

排序算法之四:直接选择排序

1.基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 2.直接选择排序 在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素 若它不是这组元素中的…

ssm的健身房预约系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; ssm的健身房预约系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spring…

AI模型平台Hugging Face存在API令牌漏洞;大型语言模型与任务模型

&#x1f989; AI新闻 &#x1f680; AI模型平台Hugging Face存在API令牌漏洞&#xff0c;黑客可窃取、修改模型 摘要&#xff1a;安全公司Lasso Security发现AI模型平台Hugging Face上存在API令牌漏洞&#xff0c;黑客可获取微软、谷歌等公司的令牌&#xff0c;并能够访问模…

C语言进阶之路之顶峰相见篇

目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句&#xff1a; GCC编译器的4个编译步骤&#xff1a; 总结 一、学习目标 掌握宏定义含义和用…

【Linux】系统初识之冯诺依曼体系结构与操作系统

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.冯诺依曼体系结构 2.操作…

一篇文章带你了解并使用mybatis框架

mybatis简介&#xff1a; MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;P…

JavaScript中的发布订阅和观察者模式:如何优雅地处理事件和数据更新

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-订阅观察者模式 目录 说说你对发布订阅、观察者模式的理解&#xff1f;…

‘ChatGLMTokenizer‘ object has no attribute ‘tokenizer‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux系统---简易伙伴系统

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、题目要求 1.采用C语言实现 2.伙伴系统采用free_area[11]数组来组织。要求伙伴内存最小为一个页面&#xff0c;页面大小为4KB…

我在Vscode学OpenCV 图像处理二(滤除噪声干扰)

图像处理二 滤除噪声干扰三、噪声3.1图像噪声3.2 滤波3.2.1均值滤波&#xff08;1&#xff09;锚点&#xff08;2&#xff09;中心点&#xff08;下面第3小点会详细解释&#xff09;&#xff08;3&#xff09;核的大小奇偶数的区别&#xff08;1&#xff09;举例奇偶的例子&…

【工具使用-JFlash】如何使用Jflash擦除和读取MCU内部指定扇区的数据

一&#xff0c;简介 在调试的过程中&#xff0c;特别是在调试向MCU内部flash写数据的时候&#xff0c;我们常常要擦除数据区的内容&#xff0c;而不想擦除程序取。那这种情况就需要擦除指定的扇区数据即可。本文介绍一种方法&#xff0c;可以擦除MCU内部Flash中指定扇区的数据…