JAVA常用工具类-【1】文件读取与存储

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();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值