JAVA中的输入输出流

FileInputStream、FileOutputStream(字节流)

字节输入流InputStream主要方法:

read() :从此输入流中读取一个数据字节。

read(byte[] b) :从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

read(byte[] b, int off, int len) :从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。

close()**:关闭此输入流并释放与该流关联的所有系统资源。**

字节输出流OutputStream主要方法:

write(byte[] b) :将 b.length 个字节从指定 byte 数组写入此文件输出流中。

write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

write(int b) :将指定字节写入此文件输出流。

close() :关闭此输入流并释放与该流关联的所有系统资源。

字节流的方式效率较低,不建议使用

public class IOTest {

public static void main(String[] args) throws IOException {

File file = new File("D:/test.txt");

write(file);

System.out.println(read(file));

}

public static void write(File file) throws IOException {

OutputStream os = new FileOutputStream(file, true);

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

// 写入文件

os.write(string.getBytes());

// 关闭流

os.close();

}

public static String read(File file) throws IOException {

InputStream in = new FileInputStream(file);

// 一次性取多少个字节

byte[] bytes = new byte[1024];

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 读取到的字节数组长度,为-1时表示没有数据

int length = 0;

// 循环取数据

while ((length = in.read(bytes)) != -1) {

// 将读取的内容转换成字符串

sb.append(new String(bytes, 0, length));

}

// 关闭流

in.close();

return sb.toString();

}

}

BufferedInputStream**、BufferedOutputStream(缓冲字节流)**

缓冲字节流是为高效率而设计的,真正的读写操作还是靠FileOutputStreamFileInputStream,所以其构造方法入参是这两个类的对象也就不奇怪了。

public class IOTest {

public static void write(File file) throws IOException {

// 缓冲字节流,提高了效率

BufferedOutputStream bis = new BufferedOutputStream(new FileOutputStream(file, true));

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

// 写入文件

bis.write(string.getBytes());

// 关闭流

bis.close();

}

public static String read(File file) throws IOException {

BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));

// 一次性取多少个字节

byte[] bytes = new byte[1024];

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 读取到的字节数组长度,为-1时表示没有数据

int length = 0;

// 循环取数据

while ((length = fis.read(bytes)) != -1) {

// 将读取的内容转换成字符串

sb.append(new String(bytes, 0, length));

}

// 关闭流

fis.close();

return sb.toString();

}

}

3、**InputStreamReader、OutputStreamWriter(字符流)**

字符流方法

字符输入流Reader主要方法:

read():读取单个字符。

read(char[] cbuf) :将字符读入数组。

read(char[] cbuf, int off, int len) : 将字符读入数组的某一部分。

read(CharBuffer target) :试图将字符读入指定的字符缓冲区。

flush() :刷新该流的缓冲。

close() :关闭此流,但要先刷新它。

字符输出流Writer主要方法:

write(char[] cbuf) :写入字符数组。

write(char[] cbuf, int off, int len) :写入字符数组的某一部分。

write(int c) :写入单个字符。

write(String str) :写入字符串。

write(String str, int off, int len) :写入字符串的某一部分。

flush() :刷新该流的缓冲。

close() :关闭此流,但要先刷新它。

另外,字符缓冲流还有两个独特的方法:

BufferedWriter类newLine() :写入一个行分隔符。这个方法会自动适配所在系统的行分隔符。

BufferedReader类readLine() :读取一个文本行。

字符流适用于文本文件的读写OutputStreamWriter类其实也是借助FileOutputStream类实现的,故其构造方法是FileOutputStream的对象

public class IOTest {

public static void write(File file) throws IOException {

// OutputStreamWriter可以显示指定字符集,否则使用默认字符集

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8");

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

osw.write(string);

osw.close();

}

public static String read(File file) throws IOException {

InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");

// 字符数组:一次读取多少个字符

char[] chars = new char[1024];

// 每次读取的字符数组先append到StringBuilder中

StringBuilder sb = new StringBuilder();

// 读取到的字符数组长度,为-1时表示没有数据

int length;

// 循环取数据

while ((length = isr.read(chars)) != -1) {

// 将读取的内容转换成字符串

sb.append(chars, 0, length);

}

// 关闭流

isr.close();

return sb.toString()

}

}

//缓冲字符流

public static void write(File file) throws IOException {

// BufferedWriter fw = new BufferedWriter(new OutputStreamWriter(new

// FileOutputStream(file, true), "UTF-8"));

// FileWriter可以大幅度简化代码

BufferedWriter bw = new BufferedWriter(new FileWriter(file, true));

// 要写入的字符串

String string = "松下问童子,言师采药去。只在此山中,云深不知处。";

bw.write(string);

bw.close();

}

public static String read(File file) throws IOException {

BufferedReader br = new BufferedReader(new FileReader(file));

// 用来接收读取的字节数组

StringBuilder sb = new StringBuilder();

// 按行读数据

String line;

// 循环取数据 readLine读取一行

while ((line = br.readLine()) != null) {

// 将读取的内容转换成字符串

sb.append(line);

}

// 关闭流

br.close();

return sb.toString();

}

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

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

相关文章

单例模式懒汉模式和饿汉模式

线程安全 单例模式在单线程中,当然是安全的。但是如果在多线程中,由于并行判断,可能会导致创建多个实例。那么如何保证在多线程中单例还是只有一个实例呢? 常见的三种方式: 局部静态变量 原理和饿汉模式相似,利用static只会初始…

cURL自动读取小工具

做自动化测试的时候Postman判断数据什么的太麻烦,做个脚本代替一下 curl_parser.py import redef parse_curl(curl_command):# 匹配所有的 -H "key: value"header_pattern re.compile(r-H "([^:]): ([^"])")headers dict(header_patte…

Redis系列命令更新--Redis有序集合命令

Redis有序集合(sorted set) (1)说明: A、Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员;不同的是每个元素都会关联一个double类型的分数;redis正式通过分数…

Web开发:元素

元素 基础结构元素文本内容元素列表元素多媒体元素表格元素表单元素语义元素示例结构分析基础结构元素头部和导航主页部分关于部分服务部分联系部分侧边栏页脚 基础结构元素 <!DOCTYPE html>&#xff1a;声明文档类型&#xff0c;告诉浏览器使用HTML5标准解析文档。它必…

MongoDB 文档存储

安装 下载&#xff1a; Download MongoDB Community Server | MongoDB 说明&#xff1a; 现在基本都安装的是4.4以后的版本。安装完成后使用 mongod 来查看是否安装成功 会输出一堆内容 而如果想要操作数据库&#xff0c;则需要安装一个工具&#xff0c;mongosh-2.2.12-x64.m…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 堆内存申请(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

linux(CentOS、Ubuntu)安装python3.12.2环境

1.下载官网Python安装包 wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz 1.1解压 tar -xf Python-3.12.2.tar.xz 解压完后切换到Python-3.12.2文件夹(这里根据自己解压的文件夹路径) cd /usr/packages/Python-3.12.2/ 1.2升级软件包管理器 CentOS系…

微信小程序canvas 使用案例(一)

一、cavans 对象获取、上线文创建 1.wxml <!-- canvas.wxml --><canvas type"2d" id"myCanvas"></canvas> 2.js /*** 生命周期函数--监听页面加载*/onLoad(options) {const query wx.createSelectorQuery()query.select(#myCanvas).f…

mysql练习3

1.修改student 表中年龄(sage)字段属性&#xff0c;数据类型由int 改变为smallint 2.为Course表中Cno 课程号字段设置索引,并查看索引 3.为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_INDEX 4.创建一视图 stu info,查询全体学生的姓名&#…

IDEA的APIPost接口测试插件详解

APIPOST官方网址 一、安装APIPost插件 打开IntelliJ IDEA&#xff1a; 启动您的IntelliJ IDEA开发环境。 导航到插件设置&#xff1a; 在Windows或Linux上&#xff0c;点击 File > Settings。在macOS上&#xff0c;点击 IntelliJ IDEA > Preferences。 搜索并安装APIPo…

前端:上传2进制图片

1、let formData new FormData(); 2、添加要传的字段&#xff1a;formData.append("avatarfile", data); &#xff08;key,value&#xff09; 3、上传文件 function uploadImg() {// 1定义FormDatalet formData new FormData();// 2添加字段formData.append("…

安装好anaconda,打开jupyter notebook,新建 报500错

解决办法&#xff1a; 打开anaconda prompt 输入 jupyter --version 重新进入jupyter notebook&#xff1a; 可以成功进入进行代码编辑

建筑工程企业项目管理系统哪个好?试试企智汇工程项目管理系统

在建筑工程行业中&#xff0c;项目管理的复杂性和挑战性是众所周知的。随着项目规模的扩大和技术的不断进步&#xff0c;传统的管理方法已经难以满足现代建筑工程的需求。企智汇工程项目管理系统应运而生&#xff0c;为建筑工程企业提供了一个全面、智能、高效的解决方案。 一…

[mmdetection]Faster-RCNN模型断点训练方法

断电等问题时常发生&#xff0c;因此我们会对模型进行断点训练。 如mmdetection项目中的FasterRCNN模型训练时出现训练突然中断&#xff0c;我们将使用如下命令从中断的epochs继续训练。 首先我们来看看模型训练时会生成的的文件&#xff1a; 接下来我们将使用如下命令进行断…

【深大计算机系统(2)】实验一 实验环境配置与使用 附常用指令

目录 一、 实验目标&#xff1a; 二、实验环境与工件&#xff1a; 三、实验内容与步骤 1. 学习并熟悉Linux基本操作&#xff0c;按照要求创建用户。&#xff08;30分&#xff09; 2.新建用户主目录下创建子目录&#xff1a;gdbdebug&#xff0c;并进入gdbdebug子目录。将过程和…

Golang | Leetcode Golang题解之第241题为运算表达式设计优先级

题目&#xff1a; 题解&#xff1a; const addition, subtraction, multiplication -1, -2, -3func diffWaysToCompute(expression string) []int {ops : []int{}for i, n : 0, len(expression); i < n; {if unicode.IsDigit(rune(expression[i])) {x : 0for ; i < n &…

C语言——详解结构体内字符型数据定义与初始化

在C语言中&#xff0c;结构体内的字符型数据可以通过多种方式进行定义&#xff0c;并且每种定义方式都有其对应的初始化方法。这些定义方式包括直接定义字符数组、使用字符指针以及结合结构体的不同定义风格。理解这些定义方式及其初始化方法对于编写高效、可维护的C语言程序至…

leetcode日记(47)螺旋矩阵Ⅱ

这题思路不难&#xff0c;就是找规律太难了。 我首先的思路是一行一行来&#xff0c;根据规律填入下一行的数组&#xff0c;第i行是由前i个数字&#xff08;n-2*i&#xff09;个增序数列后i个数字组成&#xff0c;后来觉得太难找规律了就换了一种思路。 思路大致是先计算出需…

googleTest 源码主线框架性分析

TDD&#xff0c;测试驱动开发&#xff0c;英文全称Test-Driven Development&#xff0c;简称TDD&#xff0c;是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码&#xff0c;然后只编写使测试通过的功能代码&#xff0c;通过测试来推…

Apache Commons技术详解

文章目录 简介官网链接原理基础使用Commons LangCommons Collections 高级使用Commons IOCommons Math 优缺点优点缺点 总结 简介 Apache Commons 是 Apache 软件基金会下的一个项目&#xff0c;旨在提供可重用的Java组件。这些组件覆盖了广泛的编程任务&#xff0c;从字符串处…