1、实用的工具类
package com.day.utils;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class MyFileOperate {
//写文件
public static FileWriter fileWriter;
//往文件写字符串
public static PrintWriter printWriter;
public static void main(String args[]) {
//方法1
String readString = MyFileOperate.fileRead("src/main/resources/Content.txt");
System.out.println(readString);
//方法2
List<File> tempFileList=MyFileOperate.filesGetByFolder("src/main/resources/");
for(int i=0;i<tempFileList.size();i++){
System.out.println(tempFileList.get(i).getName());
}
//方法3
MyFileOperate.fileContentClear("src/main/resources/Content.txt");
//方法4
PrintWriter tempPrintWriter=MyFileOperate.filePrintWriterInit("src/main/resources/Content.txt");
//方法5
tempPrintWriter.println("中华人民共和国");
tempPrintWriter.flush();
MyFileOperate.filePrintWriterClose();
}
/**
* 1.读取格式为UTF-8的文本内容(用电脑打开txt文本,另存为下方可以查看)
*/
public static String fileRead(String FilePath) {
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
//用于包装InputStreamReader,提高处理性能。因为BufferedReader有缓冲的,而InputStreamReader没有。
BufferedReader bufferedReader = null;
try {
String str = "";
String strAnother = "";
fileInputStream = new FileInputStream(FilePath);// FileInputStream
//从文件系统中的某个文件中获取字节
//InputStreamReader 是字节流通向字符流的桥梁,
inputStreamReader = new InputStreamReader(fileInputStream);
//从字符输入流中读取文件中的内容,封装了一个new InputStreamReader的对象
bufferedReader = new BufferedReader(inputStreamReader);
while ((str = bufferedReader.readLine()) != null) {
strAnother = strAnother + str + "\n";
}
//当读取的一行不为空时,把读到的str的值赋给strAnother
return strAnother;
} catch (FileNotFoundException e) {
return "找不到指定文件";
} catch (IOException e) {
return "读取文件失败";
} finally {
try {
//最后开的先关闭,所以先关bufferedReader,再关inputStreamReader,最后关fileInputStream。
bufferedReader.close();
inputStreamReader.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 2.遍历文件读取指定文件夹下的所有文件。如果有子文件也会列出
*/
public static List<File> filesGetByFolder(String filePath){
File root = new File(filePath);
List<File> files = new ArrayList<File>();
if(!root.isDirectory()){
files.add(root);
}else{
File[] subFiles = root.listFiles();
for(File f : subFiles){
files.addAll(filesGetByFolder(f.getAbsolutePath()));
}
}
return files;
}
/**
* 3.清空指定文件的内容
*/
public static void fileContentClear(String filePath){
try{
FileWriter fileWriter =new FileWriter(new File(filePath));
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 4.初始化文本文件存储器
*/
public static PrintWriter filePrintWriterInit(String filePath){
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File file=new File(filePath);
fileWriter = new FileWriter(file, true);
} catch (IOException e) {
e.printStackTrace();
}
printWriter= new PrintWriter(fileWriter);
return printWriter;
}
/**
* 5.关闭文本文件存储器
*/
public static void filePrintWriterClose(){
try {
printWriter.flush();
printWriter.close();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}