Java ee 文件操作和IO

news/2025/1/18 11:37:58/

字节输入流

字节输入流通过FileInputStream实现对文件的读取操作。
通过文件路径来创建一个输出流,通过一个byte数组来接受读取到的文件内容,用read方法进行循环读取。当返回-1时则表示读取完成。关闭输入流。

java">import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {//定义一个输入流FileInputStream inputStream = new FileInputStream("D:/test/test1.txt");//通过一个byte数组来接受读取到的文件内容byte[] bytes = new byte[1024];//一次读1KB//循环读取while (true){//返回数组的长度,也就是包含了多少个元素int len = inputStream.read(bytes);//在read方法中对数组进行了修改,在方法外可以访问到修改过的内容,这类参数称为输出型参数。//读取完成if(len == -1){break;}//打印数组中的内容for (int i = 0; i < len; i++) {System.out.println(bytes[i]);}}//关闭流inputStream.close();}
}

字节输出流

字节输出流通过FileOutputStream来实现对文件的写入操作。
通过文件路径来创建一个输入流,用write方法以字节的形式写入文件,强制刷新缓冲区,让数据实时落盘,关闭输出流。

java">import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo2 {public static void main(String[] args) throws IOException {// 通过文件路径创建一个输出流FileOutputStream outputStream = new FileOutputStream("D:\\test\\test2.txt");//写入内容到文件,以字节的形式写入文件outputStream.write(97); //aoutputStream.write(98); //boutputStream.write(99); //coutputStream.write(13);outputStream.write(10);outputStream.write(-26);outputStream.write(-120);outputStream.write(-111);//强制刷新缓冲区outputStream.flush();//关闭输出流outputStream.close();}
}

字符输入流

字符输入流通过创建FileReader来读取。

java">import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Demo3 {public static void main(String[] args) throws IOException {// 创建一个字符输入流FileReader fileReader = new FileReader("D:/test/test1.txt");// 循环读取while (true){// 读取一个字符int data = fileReader.read();// 读取完成,达到退出条件if(data == -1){break;}// 打印结果,一个字符一个字符的打印System.out.println(data);}// 关闭流fileReader.close();}
}

字符输入流

字符输出流通过创建FileWriter来写入字符。

java">import java.io.FileWriter;
import java.io.IOException;public class Demo4 {public static void main(String[] args) throws IOException {// 定义一个字符输出流FileWriter fileWriter = new FileWriter("D:/test/test2.txt");// 写入具体的字符fileWriter.write("hello world");fileWriter.write("\n");fileWriter.write("你好世界!");// 强制刷新缓冲区fileWriter.flush();// 关闭流fileWriter.close();}
}

利用Scanner进行字符读取

直接使用InputStream进行读取是十分麻烦的,所以我们可以使用Scanner类来简化操作。
先创建一个输入流和Scanner对象,在创建Scanner对象时,在其构造方法中传入输出流对象以及指定的编码集。
循环读取时,通过判断Scanner对象是否还有下一行来判断是否读取完成。
最后进行打印,关闭Scanner和输入流。

java">import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;public class Demo5 {public static void main(String[] args) throws IOException {// 创建一个输入流FileInputStream inputStream = new FileInputStream("D:/test/test1.txt");// 借助Scanner来简化字符的读取操作Scanner scanner = new Scanner(inputStream,"UTF-8");// 循环读取while (true){// 是否还有下一行,如果没有下一行数据表示读取完成if(!scanner.hasNextLine()){break;}// 获取数据String line = scanner.nextLine();// 打印System.out.println(line);}// 关闭Scanner和输入流scanner.close();inputStream.close();}
}

利用PrintWriter来进行写入

对于写入操作,我们也能使用PrintWriter来简化操作。
先创建一个输出流和PrintWriter对象,将输出流对象传入PrintWriter中。
再通过PrintWriter来调用各种print方法来进行写入。
最后,不能忘记强制刷新缓冲区和关闭PrintWriter和输出流。

java">import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;public class Demo6 {public static void main(String[] args) throws IOException {// 创建一个输出流FileOutputStream fileOutputStream = new FileOutputStream("D:/test/test2.txt");// 根据输出流,创建一个PrintWriter对象,用于写入字符串PrintWriter printWriter = new PrintWriter(fileOutputStream);// 写入内容printWriter.println("Hello World");printWriter.println("这是一个简便方法,你好世界!");printWriter.printf("%s:%d","单价",5);// 强制刷新缓冲区printWriter.flush();// 关闭资源printWriter.close();fileOutputStream.close();}
}

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

相关文章

59_Redis键值设计

1.拒绝BigKey BigKey通常以Key的大小和Key中成员的数量来综合判定。例如: Key本身的数据量过大:一个String类型的Key,它的值为5MB。Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10000个。Key中成员的数据量过大:一个Hash类型的Key,它的成员数量虽然只有1000个但…

Python GUI Pyside6 实例笔记

例【1】 好的&#xff01;我们将通过一个简单的案例来学习如何使用 PySide6 创建一个基本的桌面应用程序。这个案例将展示如何创建一个带有按钮的窗口&#xff0c;当点击按钮时&#xff0c;会弹出一个消息框。 1. 安装 PySide6 首先&#xff0c;确保你已经安装了 PySide6。如…

yolo训练数据集样本的标签形状一致是什么意思

“标签形状一致”指的是每个样本的标签数据在维度和大小上必须是相同的。例如&#xff0c;在目标检测任务中&#xff0c;标签通常包含目标的位置信息&#xff08;例如&#xff0c;[class, x_center, y_center, width, height]&#xff09;&#xff0c;每个目标在图像中的标签应…

4.Spring AI Prompt:与大模型进行有效沟通

1.什么是提示词 在人工智能领域&#xff0c;提示词&#xff08;Prompt&#xff09;扮演着至关重要的角色&#xff0c;它宛如一把精准的钥匙&#xff0c;为 AI 大模型开启理解之门。作为向模型输入的关键信息或引导性语句&#xff0c;提示词能够助力模型迅速洞悉问题需求&#…

正则表达式基础知识及grep、sed、awk常用命令

文章目录 前言一、正则表达式元字符和特性1. 字符匹配2. 量词3. 字符类4. 边界匹配5. 分词和捕获6. 特殊字符7. 位置锚定 二、grep常用参数1. -n额外输出行号2. -v 排除匹配的行3. -E 支持扩展正则匹配4. -e进行多规则匹配搜索5. -R 递归匹配目录中的文件内容6. -r递归地搜索目…

Vue2实现上传图片到阿里云的OSS对象存储

在 Vue 2 项目中&#xff0c;将图片上传到阿里云的 OSS&#xff08;对象存储&#xff09;需要几个步骤&#xff0c;包括配置阿里云 OSS、获取上传凭证、在前端进行上传操作等。以下是一个详细的实现步骤&#xff1a; 1. 配置阿里云 OSS 首先&#xff0c;你需要在阿里云 OSS 上…

VS Code--常用的插件

原文网址&#xff1a;VS Code--常用的插件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍VS Code&#xff08;Visual Studio Code&#xff09;常用的插件。 插件的配置 默认情况下&#xff0c;插件会放到这里&#xff1a;C:\Users\xxx\.vscode\extensions 修改插件位置的方法 …

算法随笔_10: 供暖器

上一篇&#xff1a;算法随笔_9:压缩字符串-CSDN博客 题目描述如下&#xff1a; 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在&#xff0c;给出位于一条水平线上的房屋 houses 和供暖…