Java ee 文件操作和IO

embedded/2025/1/18 10:00:16/

字节输入流

字节输入流通过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/embedded/154908.html

相关文章

Zookeeper 配置文件:核心参数优化与实操指南

文章目录 一、核心参数优化详解1.1 tickTime&#xff1a;Client-Server通信心跳时间1.2 initLimit&#xff1a;Leader-Follower初始通信时限1.3 syncLimit&#xff1a;Leader-Follower同步通信时限1.4 dataDir&#xff1a;数据文件目录1.5 clientPort&#xff1a;客户端连接端口…

Qiankun 微前端框架全面解析:架构、原理与最佳实践

Qiankun 微前端框架全面解析&#xff1a;架构、原理与最佳实践 随着前端应用的不断发展&#xff0c;单体前端项目在复杂度、维护成本和团队协作上面临越来越多的挑战。微前端&#xff08;Micro Frontends&#xff09;作为解决方案之一&#xff0c;可以帮助企业拆分前端应用&am…

Hadoop 和 Spark 的内存管理机制分析

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

走进数据中心:了解定义、作用、分类,洞悉云计算大数据时代发展新趋势

一、数据中心的定义、作用及分类 数据中心是一整套复杂的设施&#xff0c;它不仅包括计算机系统和其他与之配套的网络、存储等设备&#xff0c;还包含冗余的数据通信连接设备、环境控制设备、监控设备以及各种安全装置。Google在其发布的《The Datacenter as a Computer》一书…

嵌入式入门Day42

C Day5 作业 作业 //main.cpp #include <iostream> #include "mystring.h"using namespace std;int main() {mystring stra("Hello");mystring strb;cin >> strb;cout << strb << endl;strb stra;cout << strb << e…

vue的生命周期

生命周期是指一个对象、组件或应用程序从创建到销毁、从初始化到终止的整个过程。 Vue 2 生命周期钩子 beforeCreate实例初始化之后&#xff0c;数据观测和事件配置之前。created实例创建完成后&#xff0c;数据观测、属性和方法的运算、事件/回调配置之后。beforeMount挂载开…

1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻

从 GPT-1 到 GPT-3.5:一路的风云变幻 人工智能的进步一直是科技领域的一个重要话题,而在自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)系列模型的发布,标志着一个又一个技术突破。从2018年发布的 GPT-1 到2022年推出的 GPT-3.5,OpenAI 的每一次更新…

【MySQL】环境变量配置

环境变量英文名SystemRoot&#xff0c;直译为“系统总&#xff08;根&#xff09;目录"&#xff0c;主要指明操作系统的重要目录在哪里。那么配置MySQL的环境变量&#xff0c;就是在程序运行时&#xff0c;告诉操作系统你的MySQL目录位置。 复制MySQL安装目录&#xff1a;…