java中读写文件文件的工具类

版权声明:版权所有,违者必究 https://blog.csdn.net/weixin_39921821/article/details/89334547

一、单独的读文件时可以按字节流来读,也可以用字符流来读,这个看具体需求

1.Java字符流是处理字符(Char)对象用的,字节流是处理字节(Byte)对象用的。处理的目标对象不同,处理方法也就不一样了。
2.字符流处理的基本单位是字符(Java中的字符是16位的),输入流以Reader为基础,输出流以Writer为基础;
3.字节流的基本单位是字节(Java中的字节是8位的),输入流以 InputStream为基础,输出流以 OutputStream为基础;
4.字符流在输入时可以按字符读取,也可以按行读取,会去掉回车换行,常用于读取字符数据;而字节流按字节读取,不作任何处     理,常用于读取二进制数据。
5.Java中的字符在内部都是使用Unicode进行表示的,因此,要正确读取字符数据,需要知道字符的编码字符集,字符流提供编码字符集的指定,如果不指定使用系统默认的方式对字符数据进行编码转换,这个编码字符集不正确,会造成读进来的地字符出现乱码。
6.字节流虽然是读取二进制数据用的,但也可以读取字符文件,按字节进行处理,读进来之后可以根据编码字符集进行转换,也可以变成字符串。

二、返回值可以为byte类型的数组,也可以为字符串String,或者StringBuffer.toString的都行

工具类代码部分:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
 * @作用: 文件处理类 
 * @作者: syp 
 * @时间: 2019-4-16 15:26:27 
 */
public class FileTools {
	private String fFname = null;
	List<String> fileList = new ArrayList<String>();
	public String getFileName(String cfgFilename) {
		if (this.fFname == null) {
			String str[] = cfgFilename.split("/");
			String filename = str[str.length - 1];
			this.fFname = filename;
		}

		return this.fFname;
	}

	// 写文件
	public static int writeFile(String fileName, byte[] content) {

		Log4jBean.logger.info("开始写文件:[" + fileName + "]");

		File file = new File(fileName);
		File fileparent = file.getParentFile();
		if (!fileparent.exists()) {
			Log4jBean.logger.info("文件夹不存在,创建该目录");
			fileparent.mkdirs();
		}
		FileOutputStream os = null;
		try {
			os = new FileOutputStream(fileName);
			os.write(content);
			os.flush();

		} catch (Exception e) {
			Log4jBean.logger.info("写文件:[" + fileName + "]异常,异常信息为:["
					+ e.getMessage() + "]");
			return -1;
		} finally {
			try {
				if (null != os)
					os.close();
			} catch (IOException e) {
			}
		}
		os = null;
		Log4jBean.logger.info("写文件:[" + fileName + "]完成!");
		return 0;
	}

	// 读文件
	public static byte[] readFile(String fileName) {
		FileInputStream fis = null;
		Log4jBean.logger.info("开始读文件:[" + fileName + "]");
		byte[] buffer = null;
		try {
			fis = new FileInputStream(fileName);
			buffer = new byte[fis.available()];
			fis.read(buffer);

		} catch (Exception e) {
			Log4jBean.logger.info("读文件[" + fileName + "]失败 " + e.toString());
		} finally {
			try {
				if (null != fis)
					fis.close();
			} catch (IOException e) {
			}
		}
		fis = null;
		Log4jBean.logger.info("读文件[" + fileName + "]成功");
		Log4jBean.logger.info("文件[" + fileName + "]转为字节数组");
		return buffer;
	}
	/*
	 * 读取文件(可设置编码方式)
	 * @return 文件内容
	 */
	public String ReadFileContent(String filePath){
		File file = new File(filePath);
		// BufferedReader br = new BufferedReader(new FileReader(file));
		BufferedReader br=null;
		try {
			br = new BufferedReader(new InputStreamReader(
					new FileInputStream(file), "gbk"));
		} catch (UnsupportedEncodingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String str = null;
		StringBuffer Buff = new StringBuffer();
		try {
			while ((str = br.readLine()) != null) {
				Buff.append(str + "\r\n");
			}
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return Buff.toString();
	}

	public List<String> getFiles(String filePath) {
		Log4jBean.logger.info("开始遍历["+filePath+"]目录下的文件");
		//定义存放文件名的list集合
		
		
		//文件主目录
		File root = new File(filePath);
		
		//读出目录下所有文件
		File[] files = root.listFiles();
		if(files==null||files.length==0)
		{
			Log4jBean.logger.info("["+filePath+"]目录下无文件,不继续后续操作");
			return null;
		}
		//开始遍历文件并判断是否为文件目录		
		for (File file : files) {
		
			// 判断是否文件夹
			if (file.isDirectory()) {
			
				// 递归调用
				getFiles(file.getAbsolutePath());
				
			} else {
				
				// 否则,放入文件集合
				fileList.add(filePath+File.separator+file.getName());
				System.out.println(file.getName());
			}
		}
		Log4jBean.logger.info("["+filePath+"]目录遍历完成,里面包括["+fileList.size()+"]个文件");
		return fileList;
	}

	public static void main(String [] agrs)
	{

	}
}

猜你喜欢

转载自blog.csdn.net/weixin_39921821/article/details/89334547