FileOperate实现的功能:

1. 返回文件夹中所有文件列表

2. 读取文本文件内容

3. 新建目录

4. 新建多级目录

5. 新建文件

6. 有编码方式的创建文件

7. 删除文件

8. 删除指定文件夹下所有文件

9. 复制单个文件

10. 复制整个文件夹的内容

11. 移动文件

12. 移动目录

13. 建立一个可以追加的bufferedwriter

14. 得到一个bufferedreader

  1. package utils;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.FileWriter;
  9. import java.io.IOException;
  10. import java.io.InputStream;
  11. import java.io.InputStreamReader;
  12. import java.io.PrintWriter;
  13. import java.util.StringTokenizer;
  14. public class FileOperate {
  15. private String message;
  16. public FileOperate() {
  17. }
  18. /**
  19. * 遍历文件夹中文件
  20. *
  21. * @param filepath
  22. * @return 返回file[]数组
  23. */
  24. public File[] getFileList(String filepath) {
  25. File d = null;
  26. File list[] = null;
  27. // 建立当前目录中文件的File对象
  28. try {
  29. d = new File(filepath);
  30. if (d.exists()) {
  31. list = d.listFiles();
  32. }
  33. } catch (Exception ex) {
  34. ex.printStackTrace();
  35. message = "遍历文件夹出错";
  36. }
  37. // 取得代表目录中所有文件的File对象数组
  38. return list;
  39. }
  40. /**
  41. * 读取文本文件内容
  42. *
  43. * @param filePathAndName
  44. *            带有完整绝对路径的文件名
  45. * @param encoding
  46. *            文本文件打开的编码方式
  47. * @return 返回文本文件的内容
  48. */
  49. public String readTxt(String filePathAndName, String encoding)
  50. throws IOException {
  51. encoding = encoding.trim();
  52. StringBuffer str = new StringBuffer("");
  53. String st = "";
  54. try {
  55. FileInputStream fs = new FileInputStream(filePathAndName);
  56. InputStreamReader isr;
  57. if (encoding.equals("")) {
  58. isr = new InputStreamReader(fs);
  59. } else {
  60. isr = new InputStreamReader(fs, encoding);
  61. }
  62. BufferedReader br = new BufferedReader(isr);
  63. try {
  64. String data = "";
  65. while ((data = br.readLine()) != null) {
  66. str.append(data);
  67. }
  68. } catch (Exception e) {
  69. str.append(e.toString());
  70. }
  71. st = str.toString();
  72. if (st != null && st.length() > 1)
  73. st = st.substring(0, st.length() - 1);
  74. } catch (IOException es) {
  75. st = "";
  76. }
  77. return st;
  78. }
  79. /**
  80. * 新建目录
  81. *
  82. * @param folderPath
  83. *            目录
  84. * @return 返回目录创建后的路径
  85. */
  86. public String createFolder(String folderPath) {
  87. String txt = folderPath;
  88. try {
  89. java.io.File myFilePath = new java.io.File(txt);
  90. txt = folderPath;
  91. if (!myFilePath.exists()) {
  92. myFilePath.mkdir();
  93. }
  94. } catch (Exception e) {
  95. message = "创建目录操作出错";
  96. }
  97. return txt;
  98. }
  99. /**
  100. * 多级目录创建
  101. *
  102. * @param folderPath
  103. *            准备要在本级目录下创建新目录的目录路径例如 c:myf
  104. * @param paths
  105. *            无限级目录参数,各级目录以单数线区分 例如 a|b|c
  106. * @return 返回创建文件后的路径
  107. */
  108. public String createFolders(String folderPath, String paths) {
  109. String txts = folderPath;
  110. try {
  111. String txt;
  112. txts = folderPath;
  113. StringTokenizer st = new StringTokenizer(paths, "|");
  114. for (int i = 0; st.hasMoreTokens(); i++) {
  115. txt = st.nextToken().trim();
  116. if (txts.lastIndexOf("/") != -1) {
  117. txts = createFolder(txts + txt);
  118. } else {
  119. txts = createFolder(txts + txt + "/");
  120. }
  121. }
  122. } catch (Exception e) {
  123. message = "创建目录操作出错";
  124. }
  125. return txts;
  126. }
  127. /**
  128. * 新建文件
  129. *
  130. * @param filePathAndName
  131. *            文本文件完整绝对路径及文件名
  132. * @param fileContent
  133. *            文本文件内容
  134. * @return
  135. */
  136. public void createFile(String filePathAndName, String fileContent) {
  137. try {
  138. String filePath = filePathAndName;
  139. filePath = filePath.toString();
  140. File myFilePath = new File(filePath);
  141. if (!myFilePath.exists()) {
  142. myFilePath.createNewFile();
  143. }
  144. FileWriter resultFile = new FileWriter(myFilePath);
  145. PrintWriter myFile = new PrintWriter(resultFile);
  146. String strContent = fileContent;
  147. myFile.println(strContent);
  148. myFile.close();
  149. resultFile.close();
  150. } catch (Exception e) {
  151. message = "创建文件操作出错";
  152. }
  153. }
  154. /**
  155. * 有编码方式的文件创建
  156. *
  157. * @param filePathAndName
  158. *            文本文件完整绝对路径及文件名
  159. * @param fileContent
  160. *            文本文件内容
  161. * @param encoding
  162. *            编码方式 例如 GBK 或者 UTF-8
  163. * @return
  164. */
  165. public void createFile(String filePathAndName, String fileContent,
  166. String encoding) {
  167. try {
  168. String filePath = filePathAndName;
  169. filePath = filePath.toString();
  170. File myFilePath = new File(filePath);
  171. if (!myFilePath.exists()) {
  172. myFilePath.createNewFile();
  173. }
  174. PrintWriter myFile = new PrintWriter(myFilePath, encoding);
  175. String strContent = fileContent;
  176. myFile.println(strContent);
  177. myFile.close();
  178. } catch (Exception e) {
  179. message = "创建文件操作出错";
  180. }
  181. }
  182. /**
  183. * 删除文件
  184. *
  185. * @param filePathAndName
  186. *            文本文件完整绝对路径及文件名
  187. * @return Boolean 成功删除返回true遭遇异常返回false
  188. */
  189. public boolean delFile(String filePathAndName) {
  190. boolean bea = false;
  191. try {
  192. String filePath = filePathAndName;
  193. File myDelFile = new File(filePath);
  194. if (myDelFile.exists()) {
  195. myDelFile.delete();
  196. bea = true;
  197. } else {
  198. bea = false;
  199. message = (filePathAndName + "删除文件操作出错");
  200. }
  201. } catch (Exception e) {
  202. message = e.toString();
  203. }
  204. return bea;
  205. }
  206. /**
  207. * 删除文件
  208. *
  209. * @param folderPath
  210. *            文件夹完整绝对路径
  211. * @return
  212. */
  213. public void delFolder(String folderPath) {
  214. try {
  215. delAllFile(folderPath); // 删除完里面所有内容
  216. String filePath = folderPath;
  217. filePath = filePath.toString();
  218. java.io.File myFilePath = new java.io.File(filePath);
  219. myFilePath.delete(); // 删除空文件夹
  220. } catch (Exception e) {
  221. message = ("删除文件夹操作出错");
  222. }
  223. }
  224. /**
  225. * 删除指定文件夹下所有文件
  226. *
  227. * @param path
  228. *            文件夹完整绝对路径
  229. * @return
  230. * @return
  231. */
  232. public boolean delAllFile(String path) {
  233. boolean bea = false;
  234. File file = new File(path);
  235. if (!file.exists()) {
  236. return bea;
  237. }
  238. if (!file.isDirectory()) {
  239. return bea;
  240. }
  241. String[] tempList = file.list();
  242. File temp = null;
  243. for (int i = 0; i < tempList.length; i++) {
  244. if (path.endsWith(File.separator)) {
  245. temp = new File(path + tempList[i]);
  246. } else {
  247. temp = new File(path + File.separator + tempList[i]);
  248. }
  249. if (temp.isFile()) {
  250. temp.delete();
  251. }
  252. if (temp.isDirectory()) {
  253. delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
  254. delFolder(path + "/" + tempList[i]);// 再删除空文件
  255. bea = true;
  256. }
  257. }
  258. return bea;
  259. }
  260. /**
  261. * 复制单个文件
  262. *
  263. * @param oldPathFile
  264. *            准备复制的文件源
  265. * @param newPathFile
  266. *            拷贝到新绝对路径带文件名
  267. * @return
  268. */
  269. public void copyFile(String oldPathFile, String newPathFile) {
  270. try {
  271. int bytesum = 0;
  272. int byteread = 0;
  273. File oldfile = new File(oldPathFile);
  274. if (oldfile.exists()) { // 文件存在
  275. InputStream inStream = new FileInputStream(oldPathFile); // 读入源文件
  276. FileOutputStream fs = new FileOutputStream(newPathFile);
  277. byte[] buffer = new byte[1444];
  278. while ((byteread = inStream.read(buffer)) != -1) {
  279. bytesum += byteread; // 字节 文件大小
  280. System.out.println(bytesum);
  281. fs.write(buffer, 0, byteread);
  282. }
  283. inStream.close();
  284. }
  285. } catch (Exception e) {
  286. message = ("复制单个文件操作出错");
  287. }
  288. }
  289. /**
  290. * 复制整个文件夹的内容
  291. *
  292. * @param oldPath
  293. *            准备拷贝的目录
  294. * @param newPath
  295. *            指定绝对路径的新目录
  296. * @return
  297. */
  298. public void copyFolder(String oldPath, String newPath) {
  299. try {
  300. new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件
  301. File a = new File(oldPath);
  302. String[] file = a.list();
  303. File temp = null;
  304. for (int i = 0; i < file.length; i++) {
  305. if (oldPath.endsWith(File.separator)) {
  306. temp = new File(oldPath + file[i]);
  307. } else {
  308. temp = new File(oldPath + File.separator + file[i]);
  309. }
  310. if (temp.isFile()) {
  311. FileInputStream input = new FileInputStream(temp);
  312. FileOutputStream output = new FileOutputStream(newPath
  313. + "/" + (temp.getName()).toString());
  314. byte[] b = new byte[1024 * 5];
  315. int len;
  316. while ((len = input.read(b)) != -1) {
  317. output.write(b, 0, len);
  318. }
  319. output.flush();
  320. output.close();
  321. input.close();
  322. }
  323. if (temp.isDirectory()) {// 如果是子文件
  324. copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
  325. }
  326. }
  327. } catch (Exception e) {
  328. message = "复制整个文件夹内容操作出错";
  329. }
  330. }
  331. /**
  332. * 移动文件
  333. *
  334. * @param oldPath
  335. * @param newPath
  336. * @return
  337. */
  338. public void moveFile(String oldPath, String newPath) {
  339. copyFile(oldPath, newPath);
  340. delFile(oldPath);
  341. }
  342. /**
  343. * 移动目录
  344. *
  345. * @param oldPath
  346. * @param newPath
  347. * @return
  348. */
  349. public void moveFolder(String oldPath, String newPath) {
  350. copyFolder(oldPath, newPath);
  351. delFolder(oldPath);
  352. }
  353. /**
  354. * 建立一个可以追加的bufferedwriter
  355. *
  356. * @param fileDir
  357. * @param fileName
  358. * @return
  359. */
  360. public BufferedWriter getWriter(String fileDir, String fileName) {
  361. try {
  362. File f1 = new File(fileDir);
  363. if (!f1.exists()) {
  364. f1.mkdirs();
  365. }
  366. f1 = new File(fileDir, fileName);
  367. if (!f1.exists()) {
  368. f1.createNewFile();
  369. }
  370. BufferedWriter bw = new BufferedWriter(new FileWriter(f1.getPath(),
  371. true));
  372. return bw;
  373. } catch (Exception e) {
  374. System.out.println(e.getLocalizedMessage());
  375. return null;
  376. }
  377. }
  378. /**
  379. * 得到一个bufferedreader
  380. *
  381. * @param fileDir
  382. * @param fileName
  383. * @param encoding
  384. * @return
  385. */
  386. public BufferedReader getReader(String fileDir, String fileName,
  387. String encoding) {
  388. try {
  389. File file = new File(fileDir, fileName);
  390. InputStreamReader read = new InputStreamReader(new FileInputStream(
  391. file), encoding);
  392. BufferedReader br = new BufferedReader(read);
  393. return br;
  394. } catch (FileNotFoundException ex) {
  395. ex.printStackTrace();
  396. return null;
  397. } catch (IOException e) {
  398. e.printStackTrace();
  399. return null;
  400. }
  401. }
  402. public String getMessage() {
  403. return this.message;
  404. }
  405. }

Java IO(文件操作工具类)的更多相关文章

  1. JAVA文件操作工具类(读、增、删除、复制)

    使用JAVA的JFinal框架 1.上传文件模型类UploadFile /** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * ...

  2. 文件操作工具类: 文件/目录的创建、删除、移动、复制、zip压缩与解压.

    FileOperationUtils.java package com.xnl.utils; import java.io.BufferedInputStream; import java.io.Bu ...

  3. Android文件操作工具类(转)

    Android文件操作工具类(转)  2014/4/3 18:13:35  孤独的旅行家  博客园 这个工具类包含Android应用开发最基本的几个文件操作方法,也是我第一次发博客与大家分享自己写的东 ...

  4. 小米开源文件管理器MiCodeFileExplorer-源码研究(4)-文件操作工具类FileOperationHelper

    文件操作是非常通用的,注释都写在源代码中了,不多说~需要特别说明的是,任务的异步执行和IOperationProgressListener.拷贝和删除等操作,是比较费时的,采用了异步执行的方式~ An ...

  5. Code片段 : .properties属性文件操作工具类 & JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...

  6. Java IO 文件与流基础

    Java IO 文件与流基础 @author ixenos 摘要:创建文件.文件过滤.流分类.流结构.常见流.文件流.字节数组流(缓冲区) 如何创建一个文件 #当我们调用File类的构造器时,仅仅是在 ...

  7. 文件IO 相关的包:java.io文件——API

    文件IO 相关的包:java.io文件——API 1.Java.io.File类的使用(1)两种路径绝对路径:相对于当前路径:当前为 “工程名”(2)File类创建,对象为一个文件/目录,可能存在或不 ...

  8. 一头扎进 Java IO中-------java IO文件

    Java IO: 文件 在Java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这篇文章不会对每一个技术细节都做出解释,而是会针对文件存 ...

  9. Java—IO流 File类的常用API

    File类 1.只用于表示文件(目录)的信息(名称.大小等),不能用于文件内容的访问. package cn.test; import java.io.File; import java.io.IOE ...

随机推荐

  1. HDU 1411--校庆神秘建筑(欧拉四面体体积计算)

    校庆神秘建筑 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. 判断FreeMarker是否为空

    转自:https://blog.csdn.net/lwt976647637/article/details/73135933 (1)判断Map数据是否为空 <#ifmaster??&&a ...

  3. UIPickerView的简单使用

    UIPickerView是一个选择器它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活,使用也比较简单.下面做了一个关于天气预报的小Demo 用 UI ...

  4. JS 匿名函数或自执行函数总结

    JS引擎在遇到function关键字时做如下两种处理: 1.当语句是以function关键字开头:此时的JS语句解释为函数声明,因此function关键字后面必须要跟函数名字,如果写成匿名函数,则会报 ...

  5. react基本demo详解

    一.react的优势 1.React速度很快:它并不直接对DOM进行操作,引入了一个叫做虚拟DOM的概念,安插在javascript逻辑和实际的DOM之间,性能好. 2.跨浏览器兼容:虚拟DOM帮助我 ...

  6. transform Vs Udf

    在鞋厂的第一个任务,拆表.需要把订单表按照开始日期和结束日期拆分成多条记录,挺新鲜的~ transform方式,使用到了python. (1)把hive表的数据传入,通过python按照日期循环处理, ...

  7. LCD触屏驱动

    tiny4412多点触摸屏驱动程序(基于I2C协议): #include <linux/kernel.h> #include <linux/module.h> #include ...

  8. Python学习3——变量如何存储数据

    数值类型:包括整型.浮点型 变量名字代表的是存储地址. num01 = 100 print(id(num01)) #输出变量num01存储的内存地址,输出的是十进制值 num02 = num01 pr ...

  9. json传值给前端页面,出现堆栈溢出问题

    用的com.alibaba.fastjson.JSONObject这个包 原因:JSONObject将对象转json字符串时候没有关闭循环引用导致的堆栈溢出. 解决办法是 使用这个 JSONObjec ...

  10. Docker开篇之HelloWorld

    按照程序世界的惯例,我们应该以HelloWorld的程序为起点开始介绍.那么接下来我们就看看Docker的HelloWorld是如何运行的. 安装 Docker CE 由于我的系统是OSX,个人推荐使 ...