import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator; /**
* 文件工具类
* 2017-05-12
*/
public class FileUtil { public static void createDir(String destDirName) {
File dir = new File(destDirName);
if (!dir.exists()) {// 判断目录是否存在
dir.mkdir();
//dir.mkdirs(); //多层目录需要调用mkdirs
}
} public static File writeToFile(String content, String filePath) throws IOException {
FileWriter fw = null;
BufferedWriter bw = null;
File file = null;
try {
file = new File(filePath);
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);
bw.write(content);
bw.flush();// 清空缓冲区
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bw != null) {
bw.close();
}
if (fw != null) {
fw.close();
}
}
return file;
} public static List<String[]> readTxtFile(File file) {
LineIterator lineIterator = null;
List<String[]> list = null;
try {
lineIterator = FileUtils.lineIterator(file, "UTF-8");
list = new ArrayList<String[]>();
int lineNum = 0;
while (lineIterator.hasNext()) {
String line = lineIterator.nextLine();
// 行数据转换成数组
String[] custArray = line.split("\\|");
list.add(custArray);
lineNum++;
if (lineNum % 1000 ==0) {
Thread.sleep(10);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lineIterator != null) {
LineIterator.closeQuietly(lineIterator);
}
}
return list;
} /**
* 统计文件行数
* @param file
* @return
* @throws IOException
*/
public static int getTextLines(File file) throws IOException {
FileReader fr = new FileReader(file); //这里定义一个字符流的输入流的节点流,用于读取文件(一个字符一个字符的读取)
BufferedReader br = new BufferedReader(fr); // 在定义好的流基础上套接一个处理流,用于更加效率的读取文件(一行一行的读取)
int x = 0; // 用于统计行数,从0开始
while(br.readLine() != null) { // readLine()方法是按行读的,返回值是这行的内容
x++; // 每读一行,则变量x累加1
}
return x; //返回总的行数
} public static Map<String, Object> readBaofuTxtFile(File file) {
LineIterator lineIterator = null;
List[] list = null;
int startNum = 0;
Map<String, Object> map = new HashMap<String, Object>();
try {
lineIterator = FileUtils.lineIterator(file, "UTF-8");
list = new List[getTextLines(file)];
int lineNum = 0;
while (lineIterator.hasNext()) {
String line = lineIterator.nextLine();
// 行数据转换成数组
String[] custArray = line.split("\\|");
List<Object> rowData = new ArrayList<Object>();
for (int i = 0; i < custArray.length; i++) {
rowData.add(custArray[i]);
}
if ("商户号".equals(custArray[0])) {
startNum = lineNum + 1;
}
list[lineNum]=rowData;
lineNum++;
if (lineNum % 500 ==0) {
Thread.sleep(10);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
if (lineIterator != null) {
LineIterator.closeQuietly(lineIterator);
}
}
map.put("data", list);
map.put("startLineNum", startNum);
return map;
} public static void main(String[] args) throws IOException {
/*String content = "This is the content to write into file";
String filePath = "c:/test/filename.txt";
writeToFile(content, filePath);*/
File file = new File("c:/test/fi_20170515132029.txt");
/*List list = readTxtFile(file);
if (list != null) {
for (int i = 0; i < list.size(); i++) {
String[] s = (String[]) list.get(i);
for (int j = 0; j < s.length; j++) {
System.out.println(s[j]);
}
}
}*/
/*Map<String, Object> map = readBaofuTxtFile(file);
List[] list = (List[]) map.get("data");
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}*/
}
}

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. 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序

    版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa原创文章,转载请标明出处. 一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visua ...

  2. Farseer.net轻量级ORM开源框架 V1.2.1版本升级消息

    提交版本V1.2.11.修复实体未设置主键时,无法找到主键ID字段,改为无主键时默认为"ID”字段2.新增:SqlServer2000Provider数据库驱动3.新增:DbContextI ...

  3. Spring启动执行流程梳理

    注:本文梳理启动流程使用的Spring版本:4.0.2.RELEASE 使用spring配置,都需要在web.xml中配置一个spring的监听器和启动参数(context-param),如下: &l ...

  4. ALTER GROUP - 修改一个用户组

    SYNOPSIS ALTER GROUP groupname ADD USER username [, ... ] ALTER GROUP groupname DROP USER username [ ...

  5. 2018 CCPC 桂林站(upc复现赛)总结

    比赛一开始盯上了A题和G题,一个小时过去了还没有出题,心里有些乱.这时我看D题很多人过了,于是宝儿去看D题,说D题简单,转化成二进制暴力,于是就去做了.写的时候好像思路有点卡,WA了一发,后来马上发现 ...

  6. sed输出指定行

    and line ,8p to line ,8p -e 20p - and line -n:取消默认输出.注意:sed命令会默认把输入行打印到屏幕上,所以如果想精准的控制输出,就需要-n. -e:进行 ...

  7. Python之文件处理-递归删除特定文件

    Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...

  8. MySQL操作示例

    """ MySQL综合练习作业 """ # 1.自行创建测试数据: # 创建数据库 """ create da ...

  9. Vertex&Frag

    一.Vertex&Frag 包含Vertex&Fragment 的Shader叫做顶点&像素着色器,在Vertex的功能函数中,我们侧重于几何计算,如纹理坐标,顶点坐标等:在F ...

  10. C51 矩阵按键 个人笔记

    矩阵按键 电路 每个按键一端和同行一端相连(JP4的高4位),另一端和同列一端相连(JP4的低4位) 判断按键是否按下: 法一:逐行扫描 for(int i = 8 ; i>3 ; i-- ) ...