Java操作txt文件读、写、清空
- 1. 需求
- 2. 解决方案
- 2.1 写txt
- 2.2 读txt
- 2.2.1 一行一行的读取返回ArrayList集合
- 2.2.2 一次性读取所有返回字符串
- 2.3 清空txt中的内容
- 2.4 所有代码
1. 需求
- 任务提交完成后会生成一个办件号,然后后台审核(大概是十几分钟)
- 审核完毕后要操作查询(通过办件号查询)
所以说上一个任务生成的办件号需要保存起来,,,后边查询任务需要使用
这里考虑用txt文本存储
2. 解决方案
👍 创建一个txt,操作txt的读取和写入
2.1 写txt
👍 不覆盖的写
👍 FileWriter(file,true),true 表示可以将数据写入文件的末尾而不会替换文件原来的内容
package com.guo.Util;
import java.io.*;
public class WriteTxt {
public static void writeFile(String data){
try{
String filePath = "C:\\Users\\EDY\\Desktop\\write.txt";
File file =new File(filePath);
//如果文件不存在则创建
if(!file.exists()){
file.createNewFile();
}
//FileWriter(file,true),true 表示可以将数据写入文件的末尾而不会替换文件原来的内容
FileWriter fileWritter = new FileWriter(file,true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
//bufferWritter.write("\n");
bufferWritter.close();
System.out.println("写入成功");
}catch(IOException e){
e.printStackTrace();
}
}
public static void main( String[] args ) {
StringBuilder data = new StringBuilder();
data.append("123456").append("\n");
data.append("234567").append("\n");
data.append("345678").append("\n");
writeFile(data.toString());
}
}
2.2 读txt
2.2.1 一行一行的读取返回ArrayList集合
👍 以行为单位读取文件内容,一次读一整行,读取的内容放在ArrayList集合中,方便后续按行操作数据。
package com.guo.Util;
import java.io.*;
import java.util.ArrayList;
import static com.guo.Util.WriteTxt.writeFile;
public class ReadTxt {
public static ArrayList readFile(){
File file = new File("C:\\Users\\EDY\\Desktop\\write.txt");
BufferedReader reader = null;
String tempString = null;
ArrayList<String> stringLists = new ArrayList<>();
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
while ((tempString = reader.readLine()) != null) {
stringLists.add(tempString);
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return stringLists;
}
public static void main(String[] args) {
ArrayList<String> list = readFile(); //取出数据
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
clearInfoForFile(); //清除文件中所有的内容
//取出的数据做特殊的处理
for (int i = 0; i < list.size(); i++) {
if (list.get(i).contains(",")||"".equals(list.get(i))){
list.remove(i);
i--;
}
}
StringBuilder sB = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
if (!"0".equals(list.get(i))||"\n".equals(list.get(i))){//如果这一行没有被标记0,就添加到SB字符串中
sB.append(list.get(i)).append("\n"); //每条数据单独占一行,方便取数据
}
}
writeFile(sB.toString());
System.out.println(sB);
}
//清空txt文件
public static void clearInfoForFile() {
File file = new File("C:\\Users\\EDY\\Desktop\\write.txt");
try {
if(!file.exists()) {
file.createNewFile();
}
FileWriter fileWriter =new FileWriter(file);
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.2.2 一次性读取所有返回字符串
👍 以文件内容为单位一次性读取所有内容,并放在字符串中返回。
public static String readToString() {
String fileName = "C:\\Users\\EDY\\Desktop\\input.txt";
String encoding = "UTF-8";
File file = new File(fileName);
Long filelength = file.length();
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in = new FileInputStream(file);
in.read(filecontent);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
return new String(filecontent, encoding);
} catch (UnsupportedEncodingException e) {
System.err.println("The OS does not support " + encoding);
e.printStackTrace();
return null;
}
}
2.3 清空txt中的内容
👍 这里用的是覆盖的写txt
👍 FileWriter(file,true),true 表示末尾追加新数据
👍 FileWriter(file),表示新的数据覆盖原来的所有的数据
//清空txt文件
public static void clearInfoForFile() {
File file = new File("C:\\Users\\EDY\\Desktop\\write.txt");
try {
if(!file.exists()) {
file.createNewFile();
}
FileWriter fileWriter =new FileWriter(file);
fileWriter.write(""); //写入空
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2.4 所有代码
🤭 这里的文件的路径名称写死的可以根据情况自定义修改
public static void writeFile(String data){
try{
String filePath = "C:\\Users\\EDY\\Desktop\\good.txt";
File file =new File(filePath);
//如果文件不存在则创建
if(!file.exists()){
file.createNewFile();
}
//FileWriter(file,true),true 表示可以将数据写入文件的末尾而不会替换文件原来的内容
FileWriter fileWritter = new FileWriter(file,true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
//bufferWritter.write("\n");
bufferWritter.close();
System.out.println("写入成功");
}catch(IOException e){
e.printStackTrace();
}
}
public static ArrayList readFile(){
File file = new File("C:\\Users\\EDY\\Desktop\\good.txt");
BufferedReader reader = null;
String tempString = null;
ArrayList<String> stringLists = new ArrayList<>();
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
while ((tempString = reader.readLine()) != null) {
stringLists.add(tempString);
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return stringLists;
}
public static void clearInfoForFile() {
File file = new File("C:\\Users\\EDY\\Desktop\\good.txt");
try {
if(!file.exists()) {
file.createNewFile();
}
FileWriter fileWriter =new FileWriter(file);
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ArrayList<String> list = readFile(); //读取数据
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
clearInfoForFile(); //清除文件中所有的内容
//取出的数据做特殊的处理
for (int i = 0; i < list.size(); i++) {
if (list.get(i).contains(",")||"".equals(list.get(i))){
list.remove(i);
i--;
}
}
StringBuilder sB = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
if (!"0".equals(list.get(i))||"\n".equals(list.get(i))){//如果这一行没有被标记0,就添加到SB字符串中
sB.append(list.get(i)).append("\n"); //每条数据单独占一行,方便取数据
}
}
writeFile(sB.toString()); //写数据
System.out.println(sB);
}
//
// public static void main( String[] args ) { //添加(写)数据
// StringBuilder data = new StringBuilder();
// data.append("123456").append("\n");
// data.append("234567").append("\n");
// data.append("345678").append("\n");
// writeFile(data.toString());
// }