Java IO(文件操作工具类)
FileOperate实现的功能:
1. 返回文件夹中所有文件列表
2. 读取文本文件内容
3. 新建目录
4. 新建多级目录
5. 新建文件
6. 有编码方式的创建文件
7. 删除文件
8. 删除指定文件夹下所有文件
9. 复制单个文件
10. 复制整个文件夹的内容
11. 移动文件
12. 移动目录
13. 建立一个可以追加的bufferedwriter
14. 得到一个bufferedreader
- package utils;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.util.StringTokenizer;
- public class FileOperate {
- private String message;
- public FileOperate() {
- }
- /**
- * 遍历文件夹中文件
- *
- * @param filepath
- * @return 返回file[]数组
- */
- public File[] getFileList(String filepath) {
- File d = null;
- File list[] = null;
- // 建立当前目录中文件的File对象
- try {
- d = new File(filepath);
- if (d.exists()) {
- list = d.listFiles();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- message = "遍历文件夹出错";
- }
- // 取得代表目录中所有文件的File对象数组
- return list;
- }
- /**
- * 读取文本文件内容
- *
- * @param filePathAndName
- * 带有完整绝对路径的文件名
- * @param encoding
- * 文本文件打开的编码方式
- * @return 返回文本文件的内容
- */
- public String readTxt(String filePathAndName, String encoding)
- throws IOException {
- encoding = encoding.trim();
- StringBuffer str = new StringBuffer("");
- String st = "";
- try {
- FileInputStream fs = new FileInputStream(filePathAndName);
- InputStreamReader isr;
- if (encoding.equals("")) {
- isr = new InputStreamReader(fs);
- } else {
- isr = new InputStreamReader(fs, encoding);
- }
- BufferedReader br = new BufferedReader(isr);
- try {
- String data = "";
- while ((data = br.readLine()) != null) {
- str.append(data);
- }
- } catch (Exception e) {
- str.append(e.toString());
- }
- st = str.toString();
- if (st != null && st.length() > 1)
- st = st.substring(0, st.length() - 1);
- } catch (IOException es) {
- st = "";
- }
- return st;
- }
- /**
- * 新建目录
- *
- * @param folderPath
- * 目录
- * @return 返回目录创建后的路径
- */
- public String createFolder(String folderPath) {
- String txt = folderPath;
- try {
- java.io.File myFilePath = new java.io.File(txt);
- txt = folderPath;
- if (!myFilePath.exists()) {
- myFilePath.mkdir();
- }
- } catch (Exception e) {
- message = "创建目录操作出错";
- }
- return txt;
- }
- /**
- * 多级目录创建
- *
- * @param folderPath
- * 准备要在本级目录下创建新目录的目录路径例如 c:myf
- * @param paths
- * 无限级目录参数,各级目录以单数线区分 例如 a|b|c
- * @return 返回创建文件后的路径
- */
- public String createFolders(String folderPath, String paths) {
- String txts = folderPath;
- try {
- String txt;
- txts = folderPath;
- StringTokenizer st = new StringTokenizer(paths, "|");
- for (int i = 0; st.hasMoreTokens(); i++) {
- txt = st.nextToken().trim();
- if (txts.lastIndexOf("/") != -1) {
- txts = createFolder(txts + txt);
- } else {
- txts = createFolder(txts + txt + "/");
- }
- }
- } catch (Exception e) {
- message = "创建目录操作出错";
- }
- return txts;
- }
- /**
- * 新建文件
- *
- * @param filePathAndName
- * 文本文件完整绝对路径及文件名
- * @param fileContent
- * 文本文件内容
- * @return
- */
- public void createFile(String filePathAndName, String fileContent) {
- try {
- String filePath = filePathAndName;
- filePath = filePath.toString();
- File myFilePath = new File(filePath);
- if (!myFilePath.exists()) {
- myFilePath.createNewFile();
- }
- FileWriter resultFile = new FileWriter(myFilePath);
- PrintWriter myFile = new PrintWriter(resultFile);
- String strContent = fileContent;
- myFile.println(strContent);
- myFile.close();
- resultFile.close();
- } catch (Exception e) {
- message = "创建文件操作出错";
- }
- }
- /**
- * 有编码方式的文件创建
- *
- * @param filePathAndName
- * 文本文件完整绝对路径及文件名
- * @param fileContent
- * 文本文件内容
- * @param encoding
- * 编码方式 例如 GBK 或者 UTF-8
- * @return
- */
- public void createFile(String filePathAndName, String fileContent,
- String encoding) {
- try {
- String filePath = filePathAndName;
- filePath = filePath.toString();
- File myFilePath = new File(filePath);
- if (!myFilePath.exists()) {
- myFilePath.createNewFile();
- }
- PrintWriter myFile = new PrintWriter(myFilePath, encoding);
- String strContent = fileContent;
- myFile.println(strContent);
- myFile.close();
- } catch (Exception e) {
- message = "创建文件操作出错";
- }
- }
- /**
- * 删除文件
- *
- * @param filePathAndName
- * 文本文件完整绝对路径及文件名
- * @return Boolean 成功删除返回true遭遇异常返回false
- */
- public boolean delFile(String filePathAndName) {
- boolean bea = false;
- try {
- String filePath = filePathAndName;
- File myDelFile = new File(filePath);
- if (myDelFile.exists()) {
- myDelFile.delete();
- bea = true;
- } else {
- bea = false;
- message = (filePathAndName + "删除文件操作出错");
- }
- } catch (Exception e) {
- message = e.toString();
- }
- return bea;
- }
- /**
- * 删除文件
- *
- * @param folderPath
- * 文件夹完整绝对路径
- * @return
- */
- public void delFolder(String folderPath) {
- try {
- delAllFile(folderPath); // 删除完里面所有内容
- String filePath = folderPath;
- filePath = filePath.toString();
- java.io.File myFilePath = new java.io.File(filePath);
- myFilePath.delete(); // 删除空文件夹
- } catch (Exception e) {
- message = ("删除文件夹操作出错");
- }
- }
- /**
- * 删除指定文件夹下所有文件
- *
- * @param path
- * 文件夹完整绝对路径
- * @return
- * @return
- */
- public boolean delAllFile(String path) {
- boolean bea = false;
- File file = new File(path);
- if (!file.exists()) {
- return bea;
- }
- if (!file.isDirectory()) {
- return bea;
- }
- String[] tempList = file.list();
- File temp = null;
- for (int i = 0; i < tempList.length; i++) {
- if (path.endsWith(File.separator)) {
- temp = new File(path + tempList[i]);
- } else {
- temp = new File(path + File.separator + tempList[i]);
- }
- if (temp.isFile()) {
- temp.delete();
- }
- if (temp.isDirectory()) {
- delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
- delFolder(path + "/" + tempList[i]);// 再删除空文件
- bea = true;
- }
- }
- return bea;
- }
- /**
- * 复制单个文件
- *
- * @param oldPathFile
- * 准备复制的文件源
- * @param newPathFile
- * 拷贝到新绝对路径带文件名
- * @return
- */
- public void copyFile(String oldPathFile, String newPathFile) {
- try {
- int bytesum = 0;
- int byteread = 0;
- File oldfile = new File(oldPathFile);
- if (oldfile.exists()) { // 文件存在
- InputStream inStream = new FileInputStream(oldPathFile); // 读入源文件
- FileOutputStream fs = new FileOutputStream(newPathFile);
- byte[] buffer = new byte[1444];
- while ((byteread = inStream.read(buffer)) != -1) {
- bytesum += byteread; // 字节 文件大小
- System.out.println(bytesum);
- fs.write(buffer, 0, byteread);
- }
- inStream.close();
- }
- } catch (Exception e) {
- message = ("复制单个文件操作出错");
- }
- }
- /**
- * 复制整个文件夹的内容
- *
- * @param oldPath
- * 准备拷贝的目录
- * @param newPath
- * 指定绝对路径的新目录
- * @return
- */
- public void copyFolder(String oldPath, String newPath) {
- try {
- new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件
- File a = new File(oldPath);
- String[] file = a.list();
- File temp = null;
- for (int i = 0; i < file.length; i++) {
- if (oldPath.endsWith(File.separator)) {
- temp = new File(oldPath + file[i]);
- } else {
- temp = new File(oldPath + File.separator + file[i]);
- }
- if (temp.isFile()) {
- FileInputStream input = new FileInputStream(temp);
- FileOutputStream output = new FileOutputStream(newPath
- + "/" + (temp.getName()).toString());
- byte[] b = new byte[1024 * 5];
- int len;
- while ((len = input.read(b)) != -1) {
- output.write(b, 0, len);
- }
- output.flush();
- output.close();
- input.close();
- }
- if (temp.isDirectory()) {// 如果是子文件
- copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
- }
- }
- } catch (Exception e) {
- message = "复制整个文件夹内容操作出错";
- }
- }
- /**
- * 移动文件
- *
- * @param oldPath
- * @param newPath
- * @return
- */
- public void moveFile(String oldPath, String newPath) {
- copyFile(oldPath, newPath);
- delFile(oldPath);
- }
- /**
- * 移动目录
- *
- * @param oldPath
- * @param newPath
- * @return
- */
- public void moveFolder(String oldPath, String newPath) {
- copyFolder(oldPath, newPath);
- delFolder(oldPath);
- }
- /**
- * 建立一个可以追加的bufferedwriter
- *
- * @param fileDir
- * @param fileName
- * @return
- */
- public BufferedWriter getWriter(String fileDir, String fileName) {
- try {
- File f1 = new File(fileDir);
- if (!f1.exists()) {
- f1.mkdirs();
- }
- f1 = new File(fileDir, fileName);
- if (!f1.exists()) {
- f1.createNewFile();
- }
- BufferedWriter bw = new BufferedWriter(new FileWriter(f1.getPath(),
- true));
- return bw;
- } catch (Exception e) {
- System.out.println(e.getLocalizedMessage());
- return null;
- }
- }
- /**
- * 得到一个bufferedreader
- *
- * @param fileDir
- * @param fileName
- * @param encoding
- * @return
- */
- public BufferedReader getReader(String fileDir, String fileName,
- String encoding) {
- try {
- File file = new File(fileDir, fileName);
- InputStreamReader read = new InputStreamReader(new FileInputStream(
- file), encoding);
- BufferedReader br = new BufferedReader(read);
- return br;
- } catch (FileNotFoundException ex) {
- ex.printStackTrace();
- return null;
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
- public String getMessage() {
- return this.message;
- }
- }
Java IO(文件操作工具类)的更多相关文章
- JAVA文件操作工具类(读、增、删除、复制)
使用JAVA的JFinal框架 1.上传文件模型类UploadFile /** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * ...
- 文件操作工具类: 文件/目录的创建、删除、移动、复制、zip压缩与解压.
FileOperationUtils.java package com.xnl.utils; import java.io.BufferedInputStream; import java.io.Bu ...
- Android文件操作工具类(转)
Android文件操作工具类(转) 2014/4/3 18:13:35 孤独的旅行家 博客园 这个工具类包含Android应用开发最基本的几个文件操作方法,也是我第一次发博客与大家分享自己写的东 ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper
文件操作是非常通用的,注释都写在源代码中了,不多说~需要特别说明的是,任务的异步执行和IOperationProgressListener.拷贝和删除等操作,是比较费时的,采用了异步执行的方式~ An ...
- Code片段 : .properties属性文件操作工具类 & JSON工具类
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...
- Java IO 文件与流基础
Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...
- 文件IO 相关的包:java.io文件——API
文件IO 相关的包:java.io文件——API 1.Java.io.File类的使用(1)两种路径绝对路径:相对于当前路径:当前为 “工程名”(2)File类创建,对象为一个文件/目录,可能存在或不 ...
- 一头扎进 Java IO中-------java IO文件
Java IO: 文件 在Java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这篇文章不会对每一个技术细节都做出解释,而是会针对文件存 ...
- Java—IO流 File类的常用API
File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...
随机推荐
- ORCLE10安装常见配置问题-oui.exe停止工作
其实这是一个在安装过程中很常见的问题,之前小编说过关于甲骨文的软件用起来都很强大,但是大腕出厂,出场费是很高的,就像甲骨文的软件使用的话对于他的安装和配置的换将也是很挑剔的,出现这个问题就是因为安装文 ...
- LightOJ 1203--Guarding Bananas(二维凸包+内角计算)
1203 - Guarding Bananas PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 M ...
- cut 的用法
cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的 ...
- hibernate的报错信息a different object with the same identifier value was already associated with the session解决办法
废话不多说,直接说原因,这是在hibernate中,有2个相同类型的实体类具有同样的主键标识符,然后调用update或者调用saveOrUpdate,我朋友出这个错的由于他想要update一条数据时, ...
- 07JavaScript数据类型
JavaScript 数据类型 值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 引用数据类型: ...
- 坑爹的jquery ui datepicker
1.坑爹的jquery ui datepicker 竟然不支持选取时分秒,害的我Format半天 期间尝试了bootstrap的ditepicker,但是不起作用,发现被jquery ui 覆盖了, ...
- react基本demo详解
一.react的优势 1.React速度很快:它并不直接对DOM进行操作,引入了一个叫做虚拟DOM的概念,安插在javascript逻辑和实际的DOM之间,性能好. 2.跨浏览器兼容:虚拟DOM帮助我 ...
- Python学习:4.运算符以及数据类型解析
运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...
- Python学习笔记五:字符串常用操作,字典,三级菜单实例
字符串常用操作 7月19日,7月20日 ,7月22日,7月29日,8月29日,2月29日 首字母大写:a_str.capitalize() 统计字符串个数:a_str.count(“x”) 输出字符, ...
- c语言数据结构(一)
第一章 绪论 一.数据与数据结构 数据:所有能被输入到计算机中,且被计算机处理的符号的集合计算机操作的对象的总称.是计算机处理的信息的某种特定的符号表示形式. 数据元素:数据中的一个“个体”,数据 ...