1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11.  
  12. import org.apache.commons.io.FileUtils;
  13. import org.apache.commons.io.LineIterator;
  14.  
  15. /**
  16. * 文件工具类
  17. * 2017-05-12
  18. */
  19. public class FileUtil {
  20.  
  21. public static void createDir(String destDirName) {
  22. File dir = new File(destDirName);
  23. if (!dir.exists()) {// 判断目录是否存在
  24. dir.mkdir();
  25. //dir.mkdirs(); //多层目录需要调用mkdirs
  26. }
  27. }
  28.  
  29. public static File writeToFile(String content, String filePath) throws IOException {
  30. FileWriter fw = null;
  31. BufferedWriter bw = null;
  32. File file = null;
  33. try {
  34. file = new File(filePath);
  35. if (!file.exists()) {
  36. file.createNewFile();
  37. }
  38. fw = new FileWriter(file.getAbsoluteFile());
  39. bw = new BufferedWriter(fw);
  40. bw.write(content);
  41. bw.flush();// 清空缓冲区
  42. } catch (IOException e) {
  43. e.printStackTrace();
  44. } finally {
  45. if(bw != null) {
  46. bw.close();
  47. }
  48. if (fw != null) {
  49. fw.close();
  50. }
  51. }
  52. return file;
  53. }
  54.  
  55. public static List<String[]> readTxtFile(File file) {
  56. LineIterator lineIterator = null;
  57. List<String[]> list = null;
  58. try {
  59. lineIterator = FileUtils.lineIterator(file, "UTF-8");
  60. list = new ArrayList<String[]>();
  61. int lineNum = 0;
  62. while (lineIterator.hasNext()) {
  63. String line = lineIterator.nextLine();
  64. // 行数据转换成数组
  65. String[] custArray = line.split("\\|");
  66. list.add(custArray);
  67. lineNum++;
  68. if (lineNum % 1000 ==0) {
  69. Thread.sleep(10);
  70. }
  71. }
  72. } catch (IOException e) {
  73. e.printStackTrace();
  74. } catch (InterruptedException e) {
  75. e.printStackTrace();
  76. } finally {
  77. if (lineIterator != null) {
  78. LineIterator.closeQuietly(lineIterator);
  79. }
  80. }
  81. return list;
  82. }
  83.  
  84. /**
  85. * 统计文件行数
  86. * @param file
  87. * @return
  88. * @throws IOException
  89. */
  90. public static int getTextLines(File file) throws IOException {
  91. FileReader fr = new FileReader(file); //这里定义一个字符流的输入流的节点流,用于读取文件(一个字符一个字符的读取)
  92. BufferedReader br = new BufferedReader(fr); // 在定义好的流基础上套接一个处理流,用于更加效率的读取文件(一行一行的读取)
  93. int x = 0; // 用于统计行数,从0开始
  94. while(br.readLine() != null) { // readLine()方法是按行读的,返回值是这行的内容
  95. x++; // 每读一行,则变量x累加1
  96. }
  97. return x; //返回总的行数
  98. }
  99.  
  100. public static Map<String, Object> readBaofuTxtFile(File file) {
  101. LineIterator lineIterator = null;
  102. List[] list = null;
  103. int startNum = 0;
  104. Map<String, Object> map = new HashMap<String, Object>();
  105. try {
  106. lineIterator = FileUtils.lineIterator(file, "UTF-8");
  107. list = new List[getTextLines(file)];
  108. int lineNum = 0;
  109. while (lineIterator.hasNext()) {
  110. String line = lineIterator.nextLine();
  111. // 行数据转换成数组
  112. String[] custArray = line.split("\\|");
  113. List<Object> rowData = new ArrayList<Object>();
  114. for (int i = 0; i < custArray.length; i++) {
  115. rowData.add(custArray[i]);
  116. }
  117. if ("商户号".equals(custArray[0])) {
  118. startNum = lineNum + 1;
  119. }
  120. list[lineNum]=rowData;
  121. lineNum++;
  122. if (lineNum % 500 ==0) {
  123. Thread.sleep(10);
  124. }
  125. }
  126. } catch (IOException e) {
  127. e.printStackTrace();
  128. } catch (InterruptedException e) {
  129. e.printStackTrace();
  130. } finally {
  131. if (lineIterator != null) {
  132. LineIterator.closeQuietly(lineIterator);
  133. }
  134. }
  135. map.put("data", list);
  136. map.put("startLineNum", startNum);
  137. return map;
  138. }
  139.  
  140. public static void main(String[] args) throws IOException {
  141. /*String content = "This is the content to write into file";
  142. String filePath = "c:/test/filename.txt";
  143. writeToFile(content, filePath);*/
  144. File file = new File("c:/test/fi_20170515132029.txt");
  145. /*List list = readTxtFile(file);
  146. if (list != null) {
  147. for (int i = 0; i < list.size(); i++) {
  148. String[] s = (String[]) list.get(i);
  149. for (int j = 0; j < s.length; j++) {
  150. System.out.println(s[j]);
  151. }
  152. }
  153. }*/
  154. /*Map<String, Object> map = readBaofuTxtFile(file);
  155. List[] list = (List[]) map.get("data");
  156. for (int i = 0; i < list.length; i++) {
  157. System.out.println(list[i]);
  158. }*/
  159. }
  160. }

java文件工具类的更多相关文章

  1. 一个简单的Java文件工具类

    package com.xyworkroom.ntko.util; import java.io.File; import java.io.FileInputStream; import java.i ...

  2. 自动扫描FTP文件工具类 ScanFtp.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  3. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

  4. Java 实现删除文件工具类

    工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...

  5. Java常用工具类之删除文件

    package com.wazn.learn.util; import java.io.File; /** * 删除文件工具类 * @author yangzhenyu * */ public cla ...

  6. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...

  7. java下载文件工具类

    java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  8. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  9. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

随机推荐

  1. iOS Programming Introduction to Auto Layout 自动布局

    iOS Programming Introduction to Auto Layout   自动布局 A single application that runs natively on both t ...

  2. 有意思的String字符工具类

    对String的操作是Java攻城师必备的,一个优秀的攻城师是懒惰,他会把自己的一些常见的代码写成可提供拓展和复用的工具类或者工具库,这些是这些优秀工程师的法宝. 我就先从String这个基本操作开始 ...

  3. js几个逻辑运算符的形象概括

    “&&”是逻辑与操作符,只有“&&”两边值同时满足(同时为真),整个表达式值才为真. b>a && b<c    //“&& ...

  4. Win7 与win10绘制桌面壁纸的区别

    win7使用csrss.exe绘制壁纸. win10使用explorer.exe绘制壁纸.

  5. 在mac下做web开发,shell常用的快捷键

    Ctrl + A 光标移动到行首 Ctrl + E 光标移动到行末 Ctrl + K 清屏(也可是用clear命令) Command +shift+{} 终端的tab左右切换

  6. Mybatis输入输出映射_动态sql_关联关系(一对一、一对多、多对多)

    Mybatis输入输出映射_动态sql_关联关系(一对一.一对多.多对多)输入输出映射parameterType完成输入映射parameterType可以传入的参数有,基本数据类型(根据id查询用户的 ...

  7. 第3节 mapreduce高级:2、3、课程大纲&共同好友求取步骤一、二

    第五天课程大纲:1.社交粉丝的数据分析:求共同好友2.倒排索引的建立3.自定义inputFormat合并小文件 4.自定义outputformat5.分组求topN6.MapReduce的其他补充 了 ...

  8. SQL server 表操作语句(原创)

    CREATE TABLE [dbo].[test] ([id11] int NOT NULL ,[as] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,[asd ...

  9. pytorch: Variable detach 与 detach_

    pytorch 的 Variable 对象中有两个方法,detach和 detach_ 本文主要介绍这两个方法的效果和 能用这两个方法干什么. detach 官方文档中,对这个方法是这么介绍的. 返回 ...

  10. Android获取屏幕的大小与密度的代码

    Android项目开发中很多时候需要获取手机屏幕的宽高以及屏幕密度来进行动态布局,这里总结了三种获取屏幕大小和屏幕密度的方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...