一.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文件的更多相关文章

  1. C# winform写入和读取TXT文件

    C# winform写入和读取TXT文件 string str;            str=this.textBox1.Text;            StreamWriter sw = new ...

  2. winform 写入和读取TXT文件

    C# winform写入和读取TXT文件 string str; str=this.textBox1.Text; StreamWriter sw = new StreamWriter(Applicat ...

  3. Java 读取txt文件生成Word文档

    本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...

  4. Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!

    本文原题“从实践角度重新理解BIO和NIO”,原文由Object分享,为了更好的内容表现力,收录时有改动. 1.引言 这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关 ...

  5. JAVA读取TXT文件、新建TXT文件、写入TXT文件

    1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...

  6. Javascript写入txt和读取txt文件的方法

    文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...

  7. Java读取txt文件

    package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...

  8. java 读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  9. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

随机推荐

  1. 开源一个由.netcore/.net framework4.6开发的saas微商城+独立部署版本微小程序商城

    一.项目介绍 开源一款基于.NET4.6开发的一款完整的微信商城SAAS平台,前端支持小程序.h5,由前端商城,商户管理后台,平台管理后台三大块组成,sass功能完善,支持商户拖拽式零代码创建并提交上 ...

  2. js 正则表达式 验证与限制

    .... //验证身份证格式 function onIDCardsValidation(e) { if (e.isValid) { var pattern = /\d*/; if (!(e.value ...

  3. linux 系统ssh超时设置

    1.修改client端的etc/ssh/ssh_config添加以下:(在没有权限改server配置的情形下) ServerAliveInterval 60 #client每隔60秒发送一次请求给se ...

  4. Redis篇:事务和lua脚本的使用

    现在多数秒杀,抽奖,抢红包等大并发高流量的功能一般都是基于 redis 实现,然而在选择 redis 的时候,我们也要了解 redis 如何保证服务正确运行的原理 前言 redis 如何实现高性能和高 ...

  5. [gym102978D]Do Use FFT

    前置知识 (以下内容并不严谨,可以参考论文<转置原理的简单介绍>) 对于一个算法,其为线性算法当且仅当仅包含以下操作: 1.$read\ i$,将$r_{i}$的值赋为(下一个)读入的元素 ...

  6. [loj2842]野猪

    首先,并不一定走"除了上一次来的边"以外的最短路,但考虑"除了上一次来的边"以外的最短路和次短路(这里的次短路指最后一条边与最短路不同的"最短路&qu ...

  7. [noi707]LP

    (以下用$Sa=\sum_{j=1}^{i}xi\cdot ai$,Sb和Sc同理)令f[i][x]表示前i个数,$Sa\le x\le Sb$时最小的Sc考虑第i个数是否选择,可以得到递推式$f[i ...

  8. DPC++中的现代C++语言特性

    Ⅰ DPC++简介 DPC++是Data Parallel C++(数据并行C++)的首字母缩写,它是Intel为了将SYCL引入LLVM和oneAPI所开发的开源项目.SYCL是为了提高各种加速设备 ...

  9. HAOI 2018 Round 1 题解

    无聊了开一套省选题刷刷--u1s1 感觉三个题都不错,难度也挺有梯度,是一道标准的省选难度的题(话说 CSP 前你刷省选题干嘛/ts/ts) 小 C 珂海星 T1:P4495 [HAOI2018]奇怪 ...

  10. Codeforces 605D - Board Game(树状数组套 set)

    Codeforces 题目传送门 & 洛谷题目传送门 事实上是一道非常容易的题 很容易想到如果 \(c_i\geq a_j\) 且 \(d_i\geq b_j\) 就连一条 \(i\to j\ ...