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 ...
随机推荐
- weex图片加载更多方法loadmore的使用
首先,放一个weex中loadmore使用的demo,可以看一下http://dotwe.org/vue/8dd2a10c69e149ae8971f8298cc8bebf 1.在list标签上添加 @ ...
- JAVA基础之控制台输入输出
---恢复内容开始--- 输入需要用scanner机制 代码: 启用scanner机制 Scanner input = new Scanner(System.in); //String x= inpu ...
- 浅谈Jquery和常用框架Vue变化
区别 Vue数据与视图的分离 Vue数据驱动视图 Jquery 简单示例: <!DOCTYPE html> <html lang="en"> <hea ...
- JavaScript的兼容小坑和调试小技巧
JavaScript作为一种弱类型编程语言,入门简单,只要稍微注意一下IE方面的兼容性,就可以很好的使用它. 本文主要是对IE兼容的小坑和调试的小技巧进行举例分析,并给出解决方法. 1.var str ...
- layui sleect获取value值
<div class="layui-form-item"> <label for="username" class="layui-f ...
- 泛型List集合转化为DateTable
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; name ...
- centos7.3 gitlab 安装配置
1. 设备环境 硬件配置联想 TS250 E3-1225,16G内存,2X1 TB 软件CentOS-7-x86_64-DVD-1804.iso ,安装时选择桌面版 推荐配置参考:https://do ...
- Makefile中的$(MAKE)
今天看uboot2018顶层的Makefile中发现文件中export一个MAKE变量,export是为了向底层的Makefile传递这些变量参数,但是找了半天没有找到这个MAKE变量在哪定义的. 决 ...
- python应用:爬虫框架Scrapy系统学习第一篇——xpath详解
HTML的三大概念:标签.元素以及属性 标签:尖括号中的文本 例:<head>……</head> 标签通常成对出现 元素:标签中的所有内容 元素中可包 ...
- 微信小程序通过api接口将json数据展现到小程序上
实现知乎客户端的一个重要知识前提就是,要知道怎么通过知乎新闻的接口,来把数据展示到微信小程序端上. 那么我们这一就先学习一下,如何将接口获取到的数据展示到微信小程序上. 1.用到的知识点 <1& ...