import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
* @author wxy e-mail:wxypersonal@163.com
* @date 创建时间:2017年5月22日 下午3:59:26
* @version 1.0
* @company: xxx科技公司
* @description: InputStreamReader 是字节流向字符流转换的桥梁\ 这个类是按照格式pattern解析
* txt格式文件中的数据. ps: 其实读取其他数据格式文件也是类似的, 比如要读取.dat文件.
public class ReadTXT {
* 在这里进行测-
* @param args
public static void main(String[] args) {
File file = new File(
"E:/wxy-workspace/space01/wxy/resources/222.txt");
//注意: 这里的file路径自己可以为了测试, 随便变化的, 写一个测试文件全路径即可
List<List<Object>> arr = parseTxt(file, "\\.");
System.out.println(arr);
* 注意, 此类进行解析, 是按照gbk默认编码进行解析, 因为InputStreamReader的转换编码就是GBK
* @param file
* 为解析文件的路径
* @param pattern
* 解析格式 注意pattern的输入,是否是转义字符来解析的, 如果是, 注意正确的输入,因为split()方法支持正则表达式
* @return
public static List<List<Object>> parseTxt(File file, String pattern) {
String fileName = file.getName(); // testFile.txt
if (! StringUtils.isNotEmpty(fileName)) {
System.out.println("输入参数file错误, 必须精确到文件名.txt后缀全路径才行");
return null;
// System.out.println(fileName);
// 获取后缀名 如果后缀名没有 . 则返回""
String houZhui = fileName.lastIndexOf(".") == -1 ? "" : fileName
.substring(fileName.lastIndexOf(".") + 1) ;
List<List<Object>> listRows = null;//用于返回使用
if ("txt".equals(houZhui)) {
BufferedReader bf = null;
String temp = null;
try {
//注意:inputStreamReader是一个字节流向字符流转换的桥梁
// bf = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
FileInputStream fis = new FileInputStream(new File(file, ""));
/** 注意: 我这里吧GBK编码格式写死了, 具体工作中, 需要看txt文件的编码格式, 如果是windows系统默认, 那就是
* GBK, 如果是其他的, 那可以改成utf-8,
* */
bf = new BufferedReader(new InputStreamReader(fis, "GBK"));//从这一句可以看出, 这里可以指定
//InputStreamReader的编码格式.
listRows = new ArrayList<List<Object>>();//用于返回使用
while ((temp = bf.readLine()) != null) {
if (temp.replaceAll(" ", "").length() > 0) {
String[] arr = temp.split(pattern);
List<Object> row = new ArrayList<Object>();
for (String string : arr) {//循环遍历上面的数组
row.add(string);
listRows.add(row);
} catch (Exception e) {
e.printStackTrace();
System.out.println("txt文件读取失败");
}finally{
//在返回之前关闭流
if (bf != null) {
try {
bf.close();
} catch (IOException e2) {
//添加日志文件吧
}else{
System.out.println("发生异常: 文件的后缀名不是以.txt结尾的");
return null;
return listRows;
[code="java"]
private static List getDatFile(String fileName) throws IOException{
FileInputStream fis = null;
ObjectInputStream ois = null;
List list = new ArrayList();
Object obj = null...
第一步:首先编写文件操作类FileUtil。1、编写写入文件内容的操作rewrite2、编写读取文件内容的操作readString3、具体实现代码如下所示:import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.F...
该文章讲的仅仅是通过java对于二进制文件解析操作
首先说明一下查看.dat文件的工具:C32Asm,可以通过该工具查看.dat文件,查看模式可以选择十六进制、十进制(我们最终要的是十进制)、八进制、二进制
注:开始解析文件之前,需先了解所要解析的文件的数据结构/每个数据项所占的字节长度
public class Main {
public static void main(String[] args) {
//文件所在路径
StringfilePath = "D:\\test";
//文件.
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
对账文件名:PFBBBCCCCCCYYYYMMDD.dat,PF为固定字符,BBB指监管银行代码(bankCode 3位),CCCCCC 指城市代码(6位)YYYYMMDD为对账日期。监管协议编码|监管账号(30位)|交易金额(20位) |监管银行记账流水(30位)|记账日期(10位,YYYY-MM-DD)|第一行:为汇总信息 交易总笔数(6位)|交易总金额(20位)|很成功,很棒 我再拿着map里面的数据去判断是否为有用数据。所以获得数据之后第一行的单独取,其他的一样处理就行。其他各行:为明细信息。
有些文件结尾用dat,然而有的用txt作为后缀,在文件操作方面这个很重要
后缀名无所谓,可以随便取,关键看用什么格式写入。写入方式有二进制和字符串方式,通常约定*.dat用作二进制格式。
*.txt用作字符串格式。字符串格式的文件可以直接用notepad查看内容,但存取速度较慢;二进制格式文件不能直接用notepad查看内容(打开后...
本文实例为大家分享了java批量解析微信dat文件的具体代码,供大家参考,具体内容如下微信图片默认路径:C:\Users\b-eet\Documents\WeChat Files\b-eethoven\FileStorage\Image微信文件利用Xor加密,计算之前需要知道异或值是多少。(好像每个人电脑上面的异或值都不同,在24行更改异或值)异或值可用电脑自带的计算机计算(Xor)package...
所以即时通讯基本上试图做一个“银行”计划。到目前为止(我认为)我已经获得了将对象写入.dat文件供将来使用的方法,并且我希望在每次启动时将这些对象读入ArrayList,以便您可以访问先前创建的帐户。我一直在mainBank.main(mainBank.java:22)处得到“java.lang.IndexOutOfBoundsException”这里是mainBank的代码:import jav...
代码以下是java代码,创建一个weChatImgRevert .java后复制进去就好啦。此处的jdk版本需要1.8以上…,另外三个参数需要改成自己的哦~package main.java.com.example.demo;import java.io.*;import java.util.Arrays;import java.util.HashMap;import java.util.Map;...