day24 java IO流 四个节点流

news/2024/10/18 14:20:15/

目录

FileInputStream FileOutputStream

FileOutputStream类

FileOutputStream续写

FileInputStream类

FileWriter FileReader

FileWriter写

FileWriter续写

FileWriter换行

FileWriter关闭和刷新

FileReader读

FileReader读取指定长度


当你创建一个流对象时,必须传入一个文件路径。对于FileReader和FileInputStream 来说,如果该文件不存在,则报FileNotFoundException。如果传入的是一个目录,则会报IOException异常。

FileInputStream FileOutputStream

FileOutputStream类

java.io.FileOutputStream类是文件输出流,用于将数据写入到文件。

==支持各种类型的文件==。

  • public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件。

  • public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件。

  • public FileOutputStream(File file, boolean append): 创建文件输出流以写入由指定的 File对象表示的文件。

  • public FileOutputStream(String name, boolean append): 创建文件输出流以指定的名称写入文件。

当你创建一个流对象时,必须传入一个==文件==路径。如果传入的是一个目录,则会报IOException异常。

如果该文件不存在,会创建该文件。如果这个文件存在,可以覆盖这个文件或在文件后面续写内容。

java">@Testpublic void test03()throws IOException {// 使用文件名称创建流对象FileOutputStream fos = new FileOutputStream("fos.txt");// 字符串转换为字节数组byte[] b = "abcde".getBytes();// 写出从索引2开始,2个字节。索引2是c,两个字节,也就是cd。fos.write(b,2,2);// 关闭资源fos.close();}

FileOutputStream续写

java">public class FOSWriteAppend {public static void main(String[] args) throws IOException {// 使用文件名称创建流对象FileOutputStream fos = new FileOutputStream("fos.txt",true);// 字符串转换为字节数组byte[] b = "abcde".getBytes();fos.write(b);// 关闭资源fos.close();}
}
//这段程序如果多运行几次,每次都会在原来文件末尾追加abcde

FileInputStream类

java.io.FileInputStream类是文件输入流,从文件中读取字节。

  • FileInputStream(File file): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。

  • FileInputStream(String name): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

java"> @Testpublic void test04()throws IOException{// 使用文件名称创建流对象.FileInputStream fis = new FileInputStream("read.txt"); // 文件中为abcde// 定义变量,作为有效个数int len;// 定义字节数组,作为装字节数据的容器byte[] b = new byte[2];// 循环读取while (( len= fis.read(b))!=-1) {// 每次读取后,把数组的有效字节部分,变成字符串打印System.out.println(new String(b,0,len));//  len 每次读取的有效字节个数}// 关闭资源fis.close();}

FileWriter FileReader

字符流,处理文本数据

FileWriter写

java.io.FileWriter类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

java">    @Testpublic void test02()throws IOException {// 使用文件名称创建流对象FileWriter fw = new FileWriter("fw.txt");// 字符串转换为字节数组char[] chars = "尚硅谷".toCharArray();// 写出字符数组fw.write(chars); // 尚硅谷// 写出从索引1开始,2个字符。fw.write(chars,1,2); // 硅谷// 关闭资源fw.close();}

FileWriter续写

  • public FileWriter(File file,boolean append): 创建文件输出流以写入由指定的 File对象表示的文件。

  • public FileWriter(String fileName,boolean append): 创建文件输出流以指定的名称写入文件。

这两个构造方法,参数中都需要传入一个boolean类型的值,true 表示追加数据,false 表示清空原有数据。这样创建的输出流对象,就可以指定是否追加续写了,代码使用演示:

java">@Testpublic void test01()throws IOException {// 使用文件名称创建流对象,可以续写数据FileWriter fw = new FileWriter("fw.txt",true);// 写出字符串fw.write("尚硅谷真棒");// 关闭资源fw.close();}

FileWriter换行

\r\n换行

java">public class FWWriteNewLine {public static void main(String[] args) throws IOException {// 使用文件名称创建流对象,可以续写数据FileWriter fw = new FileWriter("fw.txt");// 写出字符串fw.write("尚");// 写出换行fw.write("\r\n");// 写出字符串fw.write("硅谷");// 关闭资源fw.close();}

FileWriter关闭和刷新

【注意】FileWriter与FileOutputStream不同。因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要flush 方法了。

  • flush :刷新缓冲区,流对象可以继续使用。

  • close:先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

java">        // 刷新fw.flush();// 关闭资源fw.close();

FileReader读

  • FileReader(File file): 创建一个新的 FileReader ,给定要读取的File对象。

  • FileReader(String fileName): 创建一个新的 FileReader ,给定要读取的文件的名称。

java">    @Testpublic void test01() throws IOException {// 使用文件名称创建流对象FileReader fr = new FileReader("read.txt");// 定义变量,保存数据int b;// 循环读取while ((b = fr.read())!=-1) {System.out.println((char)b);}// 关闭资源fr.close();}

FileReader读取指定长度

java"> @Testpublic void test02()throws IOException {// 使用文件名称创建流对象FileReader fr = new FileReader("read.txt");// 定义变量,保存有效字符个数int len;// 定义字符数组,作为装字符数据的容器char[] cbuf = new char[2];// 循环读取while ((len = fr.read(cbuf)) != -1) {System.out.println(new String(cbuf, 0, len));//读取数组中有效数据长度的内容,防止最后一次循环读取数量字符数量不够覆盖不全数组,使得读出}// 关闭资源fr.close();}


http://www.ppmy.cn/news/1432235.html

相关文章

LeetCode 34在排序数组中查找元素的第一个和最后一个位置

LeetCode 34在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,返回 [-1, -1]。 你必须设计并实现时间复…

总结一下背包里的顺序和是否逆序

1.对于01背包而言,一维压缩态只能物品到背包且需要逆序 2.对应多重背包而言,组合数物品到背包,排列数背包到物品,且都需要正序

MySQL 服务器权限与对象权限

MySQL服务器权限(全局权限)和对象权限(数据库权限和表权限)是MySQL权限体系中的两个重要组成部分,它们共同构成了MySQL的安全管理机制。 服务器权限(全局权限) 服务器权限,也称为全…

使用nacos分布式配置的好处!!!

1、没使用nacos之前,我们如果修改了配置文件,就必须重新发布应用,配置才会生效。使用nacos远程配置后,配置就可以实时更新,就无需重新发布应用,减少了重新发布所消耗的时间,提高了效率。 2、可…

《QT实用小工具·三十四》Qt/QML使用WebEngine展示的百度ECharts图表Demo

1、概述 源码放在文章末尾 该项目实现了百度ECharts图表的样式&#xff0c;效果demo如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QtWebEngine>int main(int argc, ch…

._locked勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 近年来&#xff0c;网络安全问题日益凸显&#xff0c;各种勒索病毒层出不穷&#xff0c;其中._locked勒索病毒以其独特的攻击方式和广泛的传播范围引起了广泛关注。本文91数据恢复将介绍._locked勒索病毒的特点&#xff0c;并探讨有效的应对策略&#xff0c;…

力扣经典150题解析之三十四:有效的数独

目录 解题思路与实现 - 有效的数独问题描述示例解题思路算法实现复杂度分析测试与验证总结 感谢阅读&#xff01; 解题思路与实现 - 有效的数独 问题描述 判断一个 9 x 9 的数独是否有效&#xff0c;根据以下规则验证已经填入的数字是否有效&#xff1a; 数字 1-9 在每一行只…

STM32F4使用FPU/DSP核心启用与测试

STEP1、下载DSP库 具体链接如下&#xff1a; https://www.st.com/en/embedded-software/stsw-stm32065.html?dl9w6sdOSAKySFxBhN764Stg%3D%3D%2CIS1vzyA84KLAefK%2B0DawUl0FScREpiT6AdC3qFjIMJnCIgXIwr82G2XUFo6w43Wp5L5CUyrX3vZAoaHRE3nsTmRsArV3hnQOEgX73SKt8ss1vGrLlfXT24j…