笔者受人委托,需要写一个文件转换的程序。
一听到文件转换,笔者第一个反应是想shell或者python这样的脚本语言来实现。但是委托人有些特殊要求,想要文件转换的过程中加入一些可以控制修改的功能,并且要求有操作界面,这样他们就可以很轻松的通过软件来完成文件转换的过程,最终,笔者绝地你给使用java语言来完成这个软件。
以下记录本次程序碰到的一些有用的部分。
1、首先,界面的美观性。JFrame自带的主题感觉比较难看,笔者使用UIManager修改了界面的主题。代码如下:
String lookandfeel = "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel";
UIManager.setLookAndFeel(lookandfeel);
修改后界面效果如下:
2、文件读写
笔者每次读取一行文件,代码如下
File fileInput = new File(strInputFile); if(fileInput.exists()) { try { FileReader freader = new FileReader(fileInput); BufferedReader reader = new BufferedReader(freader); String strLine=null;while(null != (strLine = reader.readLine())) { System.out.println(strLine); } } }
写入文件代码:
File fileOutput = new File(strOutputFile); FileOutputStream out = new FileOutputStream(fileOutput); String strContent="写入文件的内容"; out.write(strContent.getBytes());
在文件写入的过程中,出现了一个比较有趣的问题。
笔者想要用固定长度的格式写入数据到文件中,所有采用String.format方法来组织一个固定长度格式的字符串以便写入文件,最后发现,String.format方法中汉字的长度是1,而不是GBK编码的2.
最后解决这个问题的办法如下,貌似这个是非传统的方法:
String strChinese="汉字"; String strOutput=String.format("%-100s", new String(strChinese.getBytes, "ISO-8859-1")); strOutput=new String(strOutput.getBytes("ISO-8859-1"));
这样转换出来的结果行字就是2个字节。
3、软件打包
程序编写完成后,笔者导出jar文件,最后使用exe4j软件将jar包转换成exe。
使用exe4j生成执行码后,需要将带jar包的文件目录一起拷贝给使用者,这样使用者在没有jar环境的电脑上也可以运行该程序。