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. 【C++】类型转换简述:四种类型转换方式的说明及应用

    本文主要简述在C++中四种类型转换的方式:static_cast.reniterpret_cast.const_cast和dynamic_cast. 在介绍C++类型转换方式之前,我们先来看看C语言的 ...

  2. vue2.0 路由知识一(路由的创建的全过程)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Activiti数据库表结构(表详细版)

    http://blog.csdn.net/hj7jay/article/details/51302829 1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总 ...

  4. (转)淘淘商城系列——使用maven构建工程

    http://blog.csdn.net/yerenyuan_pku/article/details/72669269 开发工具和环境 这里,我统一规范一下淘淘商城的开发工具和环境,如下: Eclip ...

  5. day25-2 OSI协议和socket抽象层

    目录 OSI协议 物理层 数据链路层 以太网协议 Mac地址 广播地址 网络层 获取对方Mac地址(ARP协议) 传输层 TCP协议 UDP协议 应用层 socket抽象层 OSI协议 互联网的本质就 ...

  6. chgrp - 改变文件的组所有权

    总览 chgrp [选项] 组文件... POSIX 选项: [-R] [--] Austin 草拟选项: [-hHLPR] GNU 团体指示: [--reference=rfile] GNU 选项 ...

  7. 网络爬虫之框架(Scrapy)

    Scrapy爬虫框架 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合. 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫. Scrapy爬虫框架结构:

  8. java_lock锁

    lock锁是一个接口,jdk5.0新增的接口: 在线程中创建一个他的实现类对象Reentrantlock,默认为fals可以改为true,改为true后是有序的 把操作共享资源的代码放入try中,在t ...

  9. PHP生成文档,并把数据加入文档的小案例

    PHP生成文档,可以利用file_put_contents($filename, $data),其中$filename表示文档名,$data表示需要放入的数据, 若存放的是数组,这还需要使用seria ...

  10. Visual Studio 2013/2015/2017快捷键(转载)

    本文为转载文章,原文:[心存善念]  [Fonour] 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = 显示 Solution Explorer(解 ...