java的bio和nio写入及读取txt文件
一.bio的写入及读取
1.采用bio之BufferedWriter 写入文件
public static void main(String[] args) throws IOException {
//创建目录的方法
String yh_path="D:\\XXXX\\9001\\XXXX\\"; //所创建文件目录
File f = new File(yh_path);
if(!f.exists()){
f.mkdirs(); //创建目录
}
FileUtils.makeDirectory("D://XXXX//9001//XXXX/1000_XXXX_20200723_1.txt");//建立目录,目录建到XXXX为止了
FileUtils.fileWrite("D://XXXX//9001//XXXX/1000_XXXX_20200723_1.txt", CryptManager.encode(String.valueOf(126000), Md5Crypt.md5("111111").toUpperCase()));//第一次加密写入文件
FileUtils.fileWrite("D://XXXX//9001//XXXX/1000_XXXX_20200723_2.txt", "126000");//第一次非加密写入文件
//往文件中写内容的方法
for(int i = 0;i<100;i++){
String inTxt_line = "123"+i;//写入的加密前的内容
String inTxt = CryptManager.encode(inTxt_line, Md5Crypt.md5("密码").toUpperCase());//md5加密
BufferedWriter bw = new BufferedWriter(new FileWriter("D://XXXX//9001//XXXX/1000_XXXX_20200723_2.txt", true));
bw.write(inTxt + System.getProperty("line.separator"));//System.getProperty("line.separator") 换行
bw.close();
}
//复制文件的方法
FileUtils.copyFile("D://XXXX//9001//XXXX/1000_XXXX_20200723_2.txt", "D://XXXX//9001//XXXX/1000_XXXX_20200723_3.txt");
//三目运算符及%,/
//每个txt文件的首行数据
int ncount = 120600;
int fileCount = ncount % 60000 > 0 ? ncount / 60000 + 1 : ncount / 60000;
//生成文件
for (int i = 1; i <= fileCount; i++) {
System.out.println("fileCount=="+fileCount);
System.out.println("ncount=="+ncount);
System.out.println("i=="+i);
System.out.println("ncount % 60000========"+(ncount % 60000));
int new_ncount = (fileCount == 1) ? ncount : (i == fileCount) ? ncount % 60000 : 60000;
System.out.println("new_ncount==============="+new_ncount);
System.out.println("=======================================================");
}
}
2.采用nio之BigFileWR 读取文件,
public static void main(String[] args) throws UnsupportedEncodingException {
//某个盘下的多个txt文件的解析
//[D:\XXXX\RESYH\1001_mzxcfk_20201024_1.txt, D:\XXXX\RESYH\1002_mzxcfk_20201024_1.txt, D:\XXXX\RESYH\1003_mzxcfk_20201024_1.txt,
//D:\XXXX\RESYH\1004_mzxcfk_20201024_1.txt, D:\XXXX\RESYH\1005_mzxcfk_20201024_1.txt, D:\XXXX\RESYH\3105_mzxcfk_20201024_1.txt]
String path = "D:\\XXXX\\RESYH\\";
File[] files = FileUtils.listAll(path);
for (int i = 0; i < files.length; i++) {
String a[] = files[i].getName().split("_");//[1001, mzxcfk, 20201024, 1.txt]
log.info("String a[]============"+a);
if (a.length < 4) {//如果文件名不符合规则,则解析下一个文件
continue;
}
String lines;
BigFileWR bfw = null;
bfw = new BigFileWR(path + files[i].getName());
bfw.seek(0); // 49235
String key = "密码";//解密密钥
//bfw.read()是一行行往下读写的
while ((lines = bfw.read()) != null) {
// 文本第一行不计入循环,第一行为银行反馈统计数据
log.info("解析秘钥"+key);
log.info("解析前:"+lines);
lines = CryptManager.decode(lines, Md5Crypt.md5(key).toUpperCase());//md5解密方法
log.info("解析后:"+lines);//24cf8aa4ca784eb88d326df967dda4b6|0||||||||||无数据|2020-10-24|潘芬|2020-10-24|
if (lines.indexOf("|") == -1) {
continue;
}
String[] line = lines.split("\\|");//[24cf8aa4ca784eb88d326df967dda4b6, 0, , , , , , , , , , 无数据, 2020-10-24, 潘芬, 2020-10-24]
log.info("line====="+line);
String[] slxcbh = line[0].split("~");//[24cf8aa4ca784eb88d326df967dda4b6]
log.info("slxcbh====="+slxcbh);
}
}
String key = "111111";//解密密钥
String lines = CryptManager.decode("XWA=", Md5Crypt.md5(key).toUpperCase());//md5解密方法
log.info("解析后:"+lines);//24cf8aa4ca784eb88d326df967dda4b6|0||||||||||无数据|2020-10-24|潘芬|2020-10-24|
}
package tcc.test.likefiletest;
/**
* @author tcc:
* @version 创建时间:2020年12月7日 上午9:27:16
* 类说明
*/
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; public class likefiletest {
/**
* 获取文件夹下所有文件的名称 + 模糊查询(当不需要模糊查询时,queryStr传空或null即可)
* 1.当路径不存在时,map返回retType值为1
* 2.当路径为文件路径时,map返回retType值为2,文件名fileName值为文件名
* 3.当路径下有文件夹时,map返回retType值为3,文件名列表fileNameList,文件夹名列表folderNameList
*/
public static HashMap<String, Object> getFilesName(String folderPath , String queryStr) {
HashMap<String, Object> map = new HashMap<>();
List<String> fileNameList = new ArrayList<>();//文件名列表
List<String> folderNameList = new ArrayList<>();//文件夹名列表
File f = new File(folderPath);
if (!f.exists()) { //路径不存在
map.put("retType", "1");
}else{
boolean flag = f.isDirectory();
if(flag==false){ //路径为文件
map.put("retType", "2");
map.put("fileName", f.getName());
}else{ //路径为文件夹
map.put("retType", "3");
File fa[] = f.listFiles();//[D:\XXXX\1.jpg, D:\XXXX\1001, D:\XXXX\1002, D:\XXXX\1003, D:\XXXX\1004, D:\XXXX\1005, D:\XXXX\2001, D:\XXXX\2002, D:\XXXX\2003, D:\XXXX\2004, D:\XXXX\2006, D:\XXXX\2007, D:\XXXX\2008, D:\XXXX\2009, D:\XXXX\2010, D:\XXXX\2011, D:\XXXX\2012, D:\XXXX\2014, D:\XXXX\2015, D:\XXXX\2017, D:\XXXX\2018, D:\XXXX\2019, D:\XXXX\2020, D:\XXXX\3002, D:\XXXX\3003, D:\XXXX\3023, D:\XXXX\3026, D:\XXXX\3032, D:\XXXX\3033, D:\XXXX\3035, D:\XXXX\3050, D:\XXXX\3052, D:\XXXX\3060, D:\XXXX\3062, D:\XXXX\3063, D:\XXXX\3066, D:\XXXX\3071, D:\XXXX\3087, D:\XXXX\3088, D:\XXXX\3089, D:\XXXX\3093, D:\XXXX\3094, D:\XXXX\3095, D:\XXXX\3096, D:\XXXX\3097, D:\XXXX\3098, D:\XXXX\3099, D:\XXXX\3100, D:\XXXX\3101, D:\XXXX\3102, D:\XXXX\3103, D:\XXXX\3104, D:\XXXX\3105, D:\XXXX\6001, D:\XXXX\6002, D:\XXXX\6003, D:\XXXX\6004, D:\XXXX\6005, D:\XXXX\6006, D:\XXXX\6007, D:\XXXX\6008, D:\XXXX\6009, D:\XXXX\6010, D:\XXXX\6011, D:\XXXX\6012, D:\XXXX\6013, D:\XXXX\6014, D:\XXXX\6015, D:\XXXX\6016, D:\XXXX\6017, D:\XXXX\6018, D:\XXXX\7001, D:\XXXX\9000, D:\XXXX\9001, D:\XXXX\9002, D:\XXXX\BAK, D:\XXXX\FTPFS, D:\XXXX\FTPJS, D:\XXXX\XXXX, D:\XXXX\RESYH, D:\XXXX\XXXX_TEMP]
System.out.println("fa[]================="+fa);
queryStr = queryStr==null ? "" : queryStr;//若queryStr传入为null,则替换为空(indexOf匹配值不能为null)
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if(fs.getName().indexOf(queryStr)!=-1){
if (fs.isDirectory()) {
folderNameList.add(fs.getName());
} else {
fileNameList.add(fs.getName());
}
}
}
map.put("fileNameList", fileNameList);
map.put("folderNameList", folderNameList);
}
}
return map;
} public static void main(String[] args) {
//HashMap<String,Object> filesName = getFilesName("D:\\XXXX\\RESYH", "1001");
HashMap<String,Object> filesName = getFilesName("D:\\XXXX",null);
System.out.println(filesName);
List filelistname = (List) filesName.get("fileNameList");
for(int i = 0;i<filelistname.size();i++){
System.out.println(filelistname.get(i)); } }
}
java的bio和nio写入及读取txt文件的更多相关文章
- C# winform写入和读取TXT文件
C# winform写入和读取TXT文件 string str; str=this.textBox1.Text; StreamWriter sw = new ...
- winform 写入和读取TXT文件
C# winform写入和读取TXT文件 string str; str=this.textBox1.Text; StreamWriter sw = new StreamWriter(Applicat ...
- Java 读取txt文件生成Word文档
本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...
- Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!
本文原题“从实践角度重新理解BIO和NIO”,原文由Object分享,为了更好的内容表现力,收录时有改动. 1.引言 这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关 ...
- JAVA读取TXT文件、新建TXT文件、写入TXT文件
1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...
- Javascript写入txt和读取txt文件的方法
文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- java 读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- java读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
随机推荐
- 你会用ES6,那倒是用啊!
leader的吐槽大会(在代码评审中发现很多地方还是采用ES5的写法,也不是说用ES5写法不行,会有BUG,只是造成代码量增多,可读性变差而已.) ps:ES5之后的JS语法统称ES6!!! 一.关于 ...
- 测试平台系列(85) 把redis运用到实战中
大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上一节我们让支持了前置条件 ...
- 洛谷 P5853 - [USACO19DEC]Tree Depth P(生成函数+背包)
洛谷题面传送门 神仙题. 首先考虑一个点的深度是什么,注意到对于笛卡尔树而言直接从序列的角度计算一个点的深度是不容易的,因为这样会牵扯到序列中多个元素,需要 fixed 的东西太多,计算起来太复杂了. ...
- DirectX12 3D 游戏开发与实战第九章内容(下)
仅供个人学习使用,请勿转载.谢谢! 9.纹理贴图 学习目标 学习如何将局部纹理映射到网格三角形中 探究如何创建和启用纹理 学会如何通过纹理过滤来创建更加平滑的图像 探索如何使用寻址模式来进行多次贴图 ...
- [R] venn.diagram保存pdf格式文件?
vennDiagram包中的主函数绘图时,好像不直接支持PDF格式文件: dat = list(a = group_out[[1]][,1],b = group_out[[2]][,1]) names ...
- 嵌入式Linux利用ppp实现4G模块联网
https://blog.csdn.net/qq361294382/article/details/52136126 https://blog.csdn.net/qq361294382/article ...
- Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
0.exists() 用法: select * from T1 where exists(select 1 from T2 where T1.a=T2.a) 其中 "select 1 fro ...
- js判断undefined nan等
1,js判断undefined 主要用typeof(),typeof的返回值有:undefined,object,boolean,number,string,symbol,function等, if( ...
- 关于vim复制剪贴粘贴命令的总结-转
最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删除): 剪切其实也就顺带删除了所选择的 ...
- 【NetCore】RabbitMQ 封装
RabbitMQ 封装 代码 https://gitee.com/wosperry/wosperry-rabbit-mqtest/tree/master 参考Abp事件总线的用法,对拷贝的Demo进行 ...