java手写-txt大文本分割

一、txt文本切割代码

场景:公司项目txt日志文件太大,用notepad++看起来太卡了,公司禁用网盘也没法下载,自己空闲了写一个吧,复习一下输入出入流。

先给代码成品吧:

就是这么简单,几行代码就可以了。

package happything;import javax.swing.*;
import java.io.*;public class SlipTxt {// 源文件路径 D:\28515.txtpublic static String filePath = "D:\\28515.txt";// 目标文件目录 D:\happythings\fileSplitpublic static String fileOutHeadPath = "D:\\happythings\\fileSplit" ;// 目标文件名public static String fileOutName = "yx" ;// 目标文件的大小 kbpublic static int cellSize = 1024;public SlipTxt() {}/*** 文件字符流分割文件  --  不会乱码* 文本操作最好用字符流* 影音视频之类操作最好用字节流* @throws IOException*//*** 文件字符流分割文件* @throws IOException*/private static void splitByFileReader(String resFile, String targetFileDir, String targetFileName, int targetFileSize) throws IOException {// 读取文件FileReader fileReader = new FileReader(resFile);FileWriter fileWriter = new FileWriter(targetFileDir + "/" + targetFileName + ".txt");// 一次读1024个字符char [] buf = new char[1024];int count = 0;int id = 1;while (fileReader.read(buf) != -1) {// 读取targetFileSize次之后,开始向第二个txt注入if (count != 0 && count % targetFileSize == 0) {// 创建新的输出流时,将前一个关闭。fileWriter.close();fileWriter = new FileWriter(targetFileDir + "/" + targetFileName + id + ".txt");id ++;}fileWriter.write(buf);count ++;}fileReader.close();fileWriter.close();}
}

后来想着复习一下java的gui控件,做一个简单的可视化吧

代码如下:

package happything;import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class MyJframe extends JFrame {// 布局很简单,直接看swing菜鸟教程就可以,五分钟搞定public static void placeComponents(JPanel panel) {/* 布局部分我们这边不多做介绍* 这边设置布局为 null*/panel.setLayout(null);// 创建 JLabelJLabel resFileLabel = new JLabel("源文件目录:");resFileLabel.setBounds(10,20,130,25);panel.add(resFileLabel);JTextField resFileText = new JTextField(20);resFileText.setBounds(160,20,200,25);panel.add(resFileText);// 目标文件目录JLabel targetFileDir = new JLabel("目标文件目录:");targetFileDir.setBounds(10,50,130,25);panel.add(targetFileDir);JTextField targetFileDirText = new JTextField(20);targetFileDirText.setBounds(160,50,200,25);panel.add(targetFileDirText);// 目标文件名JLabel targetFileName = new JLabel("目标文件名:");targetFileName.setBounds(10,80,130,25);panel.add(targetFileName);JTextField targetFileNameText = new JTextField(20);targetFileNameText.setBounds(160,80,200,25);panel.add(targetFileNameText);// 目标文件大小JLabel targetFileSizeLabel = new JLabel("目标文件大小(kb):");targetFileSizeLabel.setBounds(10,110,130,25);panel.add(targetFileSizeLabel);JTextField targetFileSizeText = new JTextField(20);targetFileSizeText.setBounds(160,110,200,25);panel.add(targetFileSizeText);// 开始分割JButton splitButton = new JButton("开始分割");splitButton.setBounds(10, 170, 100, 25);panel.add(splitButton);splitButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String resFile = resFileText.getText();String targetFileDir = targetFileDirText.getText();String targetFileName = targetFileNameText.getText();String targetFileSize = targetFileSizeText.getText();try {splitByFileReader(resFile, targetFileDir, targetFileName, Integer.valueOf(targetFileSize));} catch (IOException ex) {ex.printStackTrace();}}});}public static void main(String[] args) {// 创建 JFrame 实例JFrame frame = new JFrame("文件分割器");frame.setBounds(400, 180, 400, 240);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel panel = new JPanel();// 添加面板frame.add(panel);MyJframe.placeComponents(panel);// 设置界面可见frame.setVisible(true);}/*** 文件字符流分割文件* @throws IOException*/private static void splitByFileReader(String resFile, String targetFileDir, String targetFileName, int targetFileSize) throws IOException {// 读取文件FileReader fileReader = new FileReader(resFile);FileWriter fileWriter = new FileWriter(targetFileDir + "/" + targetFileName + ".txt");// 一次读1024个字符char [] buf = new char[1024];int count = 0;int id = 1;while (fileReader.read(buf) != -1) {// 读取targetFileSize次之后,开始向第二个txt注入if (count != 0 && count % targetFileSize == 0) {fileWriter.close();fileWriter = new FileWriter(targetFileDir + "/" + targetFileName + id + ".txt");id ++;}fileWriter.write(buf);count ++;}fileReader.close();fileWriter.close();}}

成品如图:

txt文本分割截图.png

notes:

汉字文本文件最好用字符流。一个字符在utf8下占3字节,在控制目标文本大小的时候,很容易出现一个汉字的三个字节在两个分割后的txt文件中,造成乱码。

在计算机最初的诞生阶段,采用的编码格式是ASCII编码,这种编码格式只制定了英文字母,数字以及一些标点符号的编码,但随着计算机的发展,不同的语言体系,用ASCII编码已经不再能全部包含各种文字体系的文字。针对中文,最初提出了GB2312的编码格式,这种编码格式中,一个中文占用两个字节长度。但各个语言体系使用不同的编码格式,这样就使计算机在各个语言体系间切换变得异常麻烦。由此,国际组织提出了UNICODE 编码格式,这种编码格式包含了大多数语言体系的文字,也被称为万国码,在这个编码格式中,一个中文占用四个字节长度。但这个编码格式的中文,并不需要使用四个字节就能完成编码,相当于有一个字节被浪费了,由此,进一步提出了utf-8的中文编码格式,该编码格式中,一个中文占用三个字节长。

二、java程序转exe可执行文件

想着这个还是挺常用的,要是每次都要重新打开idea也太费劲了,就转成了exe文件。

大概过程:

1、打成jar包

2、下载exe4j工具,按需要操作,把jar包转成exe文件

截图教程太麻烦了,有空了补上


jar转exe 详细过程
https://www.jianshu.com/p/97601c111867

exe成品.png

三、升级成不需要jre环境依赖也可以执行的exe文件。

大概过程:

1、下载inno setup工具

2、将exe文件和jre依赖都注入进去,就ok了。

截图教程太麻烦了,有空了补上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352033.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#版TXT文本分割器

哈!老师实验要求要做文件分割器的,这里先做个demo出来和大家分享下。 这是实验要求:1. 能进行文件分割 2. 分割块大小由用户输入决定 3. 能进行文件合并 …

C#txt文本分割器

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;//openfiledialog using System.IO;//文本处理namespace CutTxt {public parti…

一文带你了解MySQL之事务隔离级别和MVCC

目录 一、数据准备二、事务隔离级别2.1 事务并发执行遇到的问题2.2 SQL标准中的四种隔离级别2.3 MySQL中支持的四种隔离级别 三、MVCC3.1 版本链3.2 ReadView3.2.1 READ COMMITTED3.2.2 REPEATABLE READ 3.3 MVCC小结 四、关于purge五、总结 一、数据准备 为了我们学习的顺利进…

从FC到Wii 24年来游戏机CPU发展历程回顾

作者:吴愧 从小学开始,游戏机就伴随着我走过一段快乐、辛酸的历程。宁愿早上饿肚子,也要省吃减用存钱买游戏卡,或者添钱换卡玩。好不容易有钱买到新的游戏卡,高兴得乐翻天,玩到饭都能都忘记吃。对于家里那些…

MotioninJoy安装教程-版本0.6.0003

摘要: SONY的PS3游戏主机配置的DS3(DUALSHOCK 3)手柄质量手感都不错,特别是喜欢PS系手柄玩实况足球的玩家来说就是不二的选择。DUALSHOCK 3本身包括蓝牙无线和USB有线的通信方式,但是都不是标准的数据格式,所以在电脑系 ... SONY的PS3游戏主机…

感叹游戏行业的飞速发展

现在的游戏大作层出不穷,玩着这些3A大作,有时候不禁让我想起小时候玩小霸王游戏机的时光,虽然小霸王游戏是抄袭任天堂的红白机,但确实给国内的孩子们带来了无限的乐趣。那个时候一起玩耍的小伙伴们,都会要求父母给自己…

G502使用计算机配置,罗技g502dpi设置配置文件 | 手游网游页游攻略大全

发布时间:2016-06-27 我是用罗技力反馈EX 以下是设置截图 [不知道是不是游戏有BUG,我的方向盘始终没有出现自然震动.但是一按手刹车就会震动个不停] 第一步: 请在罗技驱动方向盘驱动程序下,选择双轴 [也就是图中的组合那里不要打勾,要不然 ... 标签: 攻…

推荐一个ps3的六轴手柄在windows下的驱动

和Xbox360手柄的适配器和电池盒需要另外购买比起来,PS3手柄比较厚道,基本上是一次性到位(蓝牙适配器的价格就几乎忽略不计了),但PS3手柄在Windows下却没有官方的驱动,导致无法发挥其强悍的功能,…

DirectInput手柄在Windows环境下震动实现

DirectInput手柄Windows环境下震动实现 背景1.direcrInput手柄震动控制1.1运行环境1.2代码实现 2 模拟XInput设备,通过XInput实现2.1 x360ce设置 2.2 XInput 代码实现2.3 x360ce分析 背景 近期项目里面有个需求,需要在控制终端上安装摇杆,且…

虚幻4UE4使用PS4 DualShock4手柄ProController Switch手柄

虚幻4UE4使用PS4 DualShock4手柄ProController Switch手柄 使用虚幻引擎绑定输入操作可参考我的另一篇文章。虚幻4 UE4 绑定按键操作及切换视角-CSDN博客 使用虚幻引擎开发经常会碰到使用手柄或其他输入设备进行输入的情况,虽然在引擎->输入中有游戏手柄的各种…

Maven 打包插件 maven-jar-plugin

文章目录 指定版本生成可执行 Jar准备依赖,并指定依赖位置自动下载依赖的 Jar 文件 打包时排除文件与其他常用打包插件比较 本文是对 maven-jar-plugin 常用配置的介绍,更详细的学习请参照 Apache Maven JAR Plugin 官方文档 这是 maven 生命周期 packa…

Linux系统中使用Xbox360手柄

最近一个项目中需要用到Xbox360游戏手柄,硬件平台为周立功A7开发板,EPC-6G2C-L,折腾半天,终于弄好了; 正常电脑Ubuntu系统是自带手柄驱动的,将手柄插上电脑USB接口,将自动出现设备接口文件&…

dll修复都有哪些方法?详细解析各种dll修复方法

DLL(动态链接库)是 Windows 操作系统中的一种重要文件,它包含了许多程序所需的函数和资源。因此,当 DLL 文件出现问题时,可能会导致程序无法正常运行,甚至整个系统崩溃。这时候需要使用 DLL 修复工具进行修…

ROS:常用可视化工具的使用

目录 一、日志输出工具——rqt_console二、绘制数据曲线——rqt_plot三、图像渲染工具——rqt_image_view四、图形界面总接口——rqt五、Rviz六、Gazebo 一、日志输出工具——rqt_console 启动海龟键盘控制节点,打开日志输出工具 roscorerosrun turtlesim turtles…

linux版drastic模拟器设置,DraStic nds模拟器下载安装及使用图文教程

近日,曾便携过PSP用GBA模拟器的开发者Exophase发布了一款安卓用的NDS模拟器《DraStic》,DraStic曾是Exophase为开源掌机潘多拉编写的一款功能强大的NDS模拟器,现在移植到了Android。 你会在下载到的Download文件夹内发现三个文件,…

【娇娘内核】完整解密

这个很好,一直想了解的,转之。原帖,感谢“华敏乐” --------------&#…

《口袋妖怪 太阳/月亮》正式公布 简体中文确认

Pokmon(大陆通常意译为<口袋妖怪>, 港译为<寵物小精靈>,台译为<神奇寶貝>)系列作为任天堂平台的的招牌游戏之一, 自诞生20年以来在全球有非常多的玩家. 此前发布的版本内置了8国语言, 但是并没有中文.其实中国玩家也非常多, 所以经常拿"8国语言"来…

[转幺幺]硬件解码—NDS影音播放专家iPlayer卡评测

转&#xff1a;幺幺任天堂 前言&#xff1a;DS并不缺乏多媒体能力&#xff0c;虽然任天堂官方没有给它加入这些&#xff0c;但是通过自制软件&#xff0c;我们已经实现了用DS听音乐、看电子书、看视频等功能。看书看图听音乐这些功能已经比较完美了&#xff0c;而且支持的都是目…

自己动手丰衣足食-自己动手修改GBA ROM游戏文件

经过一天的努力终于琢磨出怎么修改GBA的游戏文件也就是俗称的ROM文件&#xff0c;起因是因为偶然看到二手GBM&#xff0c;顿时抑制不住买了一台&#xff0c;可惜买得晚了&#xff0c;完美运行游戏又带金手指功能的烧录卡买不到了。SUPERCARD烧录卡看评论说费电&#xff0c;玩游…

【3DS】必做清单

3DS必做清单 引言 翻新后的小贴士 本文用于记录我的New Nindendo 3DSLL 软件翻新历程。 因为国内很多都提供现成的懒人包&#xff0c;如果上游有更新&#xff0c;没办法第一时间拿到。 如果你的网络条件够好&#xff0c;可以试试在Universal-Updater里面搜对应软件名字就好. 晚…