Java:简单的文件操作,将用字符表示的16进制数转为对应的2进制内容保存到新文件中
2015-01-06 00:00
417 查看
package main; import java.io.*; class test{ private static String hexString = "0123456789abcdef"; public static void main(String[] args) throws IOException{ int argc = args.length; if(argc==1){ String fileInPath = "src/resource/test.txt"; String fileOutPath = "src/resource/data.txt"; //相对路径 PacketsToFile(fileInPath,fileOutPath); }else if(argc==2){ PacketsToFile(args[0],args[1]);//输入绝对路径 }else{ System.out.println("输入格式错误"); System.out.println("先用记事本替换文件中全部的'|'符号,输入的格式java -jar string2hex.jar D://test.txt D://data.txt第一个是原文件,后一个是生成的文件,需要自己先创建文件"); } } public static void PacketsToFile(String fileInPath,String fileOutPath) throws IOException{ try{ String encoding="UTF-8"; File file=new File(fileInPath); File data=new File(fileOutPath); DataOutputStream os = new DataOutputStream(new FileOutputStream(data)); if(file.isFile() && file.exists() && data.isFile() && data.exists()){ InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; int i = 1,n = 1; while((lineTxt = bufferedReader.readLine()) != null ){ if(i==(4*n-1)){ //取决于文件中数据包的位置,这里是在3,7,11..行 n++; String temp = lineTxt.substring(4,lineTxt.length()).trim(); String len = Integer.toHexString(temp.length()/2); //数据包前加入两个字节的数据包长度 if(len.length()==1){ len = "000"+len; }else if(len.length()==2){ len = "00"+len; }else if(len.length()==3){ len = "0"+len; }else if(len.length()>4||len.length()==0){ System.out.println("帧内容异常"); } String oneP = len+temp; for (int j = 0; j < oneP.length(); j += 2){ byte oneByte = (byte)((hexString.indexOf(oneP.charAt(j))*16) +(hexString.indexOf(oneP.charAt(j + 1)))); //把对应的整数转为一个字节 os.write(oneByte); } } i++; } long sizeOfFile = (long) file.length(); System.out.println("原文件有 "+sizeOfFile*1.0/(1024.0*1024.0)+" MB"); System.out.println("包含"+(n-1)+"个数据包"); long sizeOfData = (long) data.length(); System.out.println("生成文件有 "+sizeOfData*1.0/(1024.0*1024.0)+" MB"); read.close(); os.close(); }else{ System.out.println("找不到指定的文件,请检查路径"); } }catch (Exception e) { System.out.println("读取文件时发生错误出错"); e.printStackTrace(); } } }
相关文章推荐
- Java中读取一个TXT文件中的每行内容的前5个字符,并保存到另一个TXT文件中。
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Java读取文件内容与字符串保存成文件的操作
- Java创建文件并向文件写入内容:I/0流简单操作
- 【java】:对属性文件的读写操作,中文字符解决方案
- java中,对文件进行追加内容操作的三种方法
- web 工程下 java操作属性文件保存在classes下的读写操作
- java实现简单的异或操作(用于文件简单加密)
- Java_常瑞鹏 java_字符流与字节流文件操作
- java中多种方式读文件,追加文件内容,对文件的各种操作
- uuids.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
- Java文件操作的基本概念和简单操作
- java 读取properties配置文件内容乱码 --日文乱码对应方法
- JAVA100例]034、读写文件(字符操作)(java100例)
- java_字符流与字节流文件操作
- 【Java】运用多种方式读取文件内容,包括按字节、字符和按行为单位读取文件内容
- java 属性文件(配置文件)的简单操作
- JAVA操作将内容追加写入文件
- java操作将内容写入文件
- java简单读写文件操作