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 ...
随机推荐
- Xcode 怎么查看代码总行数
打开终端 输入 cd 空格 你的工程路径这里有一个小技巧,你把要统计的文件夹直接拖住拖到终端里,路径就出来了.然后输入find . -name "*.m" -or -name &q ...
- vector 定义的二维数组的遍历
之前我们分享了STL的一些容器,再介绍vector中只介绍了二维的vector的定义并没有说二维的vector怎么遍历,那么我们今天就来看下二维的vector怎么遍历 看下面的代码吧. #includ ...
- Codeforces Round #483 (Div. 2)C题
C. Finite or not? time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- free -g 说明
free -g 说明: free -g -/+ buffers/cache 说明: buffer 写缓存,表示脏数据写入磁盘之前缓存一段时间,可以释放.sync命令可以把buffer强制写入硬盘 ca ...
- sqlserver 导出数据库表结构
https://www.cnblogs.com/miaomiaoquanfa/p/6909835.html SELECT 表名 = case when a.colorder=1 then d.name ...
- 慕课笔记-JavaScript正则表达式
目录 慕课笔记-JavaScript正则表达式笔记 概述 RegExp对象 修饰符 元字符 字符类 范围类 预定义类 预定义字符 边界 量词 贪婪模式 分组 或(使用竖线表示) 反向引用 忽略分组 前 ...
- React的安装方法
一:直接使用 BootCDN 的 React CDN 库,地址如下: <script src="https://cdn.bootcss.com/react/16.4.0/umd/rea ...
- windows 10 安装node.js
第一步:下载软件 nodejs的中文官网http://nodejs.cn/download/ 选择 windows 系统 msi 安装版本. 下载完成之后,直接打开下一步安装就可以. 安装完成 打开 ...
- hiveserver2不能启动
我的hiveserver2一直不能启动,命令行一直卡住不动,然后我就想是不是配置文件没有配置相关的参数,然后就来修改hive-site.xml 最终修改完后的hive-site.xml: <?x ...
- Zookeeper -- 关于Zookeeper
Zookeeper是什么? 分布式协调框架 Zookeeper中文件呈树形结构,树形结构下包含多个节点,称为Znode:zk中节点存储数据不超过1M,指得是Znode中存储数据不超过1M Zookee ...