关于java读取二进制文件的问题 现在我在做一个类的mock测试,需要自己编数据。leader要求数据放在一个二进制文件里面。现在的问题是DataOutputStream写入的数据可以读出,但是我要怎么手动写数据进去?二进制编辑器?另外,字符'a'在二进制文件中为什么是61?BCD码么?急求各路神仙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主所说的二进制文件,可能就是说非文本文件,或说不能用文本编辑器正确打开并编辑的文件. 象java的.class文件,mp3文件,可执行的.exe 文件等都可看作是“二进制”文件。'a'的ascii编码是0x61,所以如果文件里的字节是0x61,文本编辑器就会认为是代表字母'a',显示出来。 哦 这个刚才迷糊了。把61当bcd码了。其实我需要的就是一个txt或者dat文件,写入后普通文本编辑器打开时乱码。比如'a'可以写成0061,数字怎么办?下面是a.txt用editplus二进制viewer打开的读写的代码/** * */import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.EOFException;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * @author Administrator * */public class BinaryUtil { public static void main(String[] args) throws IOException { DataOutputStream out = new DataOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\a.txt")); double[] prices = { 19.99, 9.99, 15.99, 3.99}; int[] units = { 12, 8, 13, 29 }; String[] descs = { "Java", "Source ", "and","Support."}; for (int i = 0; i < prices.length; i++) { out.writeDouble(prices[i]); out.writeChar('\t'); out.writeInt(units[i]); out.writeChar('\t'); out.writeChars(descs[i]); out.writeChar('\n'); } out.close(); // read it in again DataInputStream in = new DataInputStream(new FileInputStream( "C:\\Users\\Administrator\\Desktop\\a.txt")); double price; int unit; String desc; double total = 0.0; try { while (true) { price = in.readDouble(); in.readChar(); // throws out the tab unit = in.readInt(); in.readChar(); // throws out the tab desc = in.readLine(); System.out.println( unit ); System.out.println( price ); System.out.println( desc ); total = total + unit * price; } } catch (EOFException e) { } in.close(); }} 关于web service的一些问题 关于xml的解析工具等 在hibernate中一对一连查时碰到一个问题 跪问 在一个jsp页面中怎么在上部显示错误信息 一些面试题!请高手解答 谁知道JAVA有个IDE叫“卡鲁”的吗?从哪里下载? 关于jsp配置的问题,小妹在线等待呀,急!!! 我从SUN公司下载了一个技术文档,但如何解压j2ee-1_4-dr-doc-tutorial.zip.jc!? 大侠们给指个方向 junit测试出错,求助 求一个struts2 hibernate分页的例子 设计论坛求指导
'a'的ascii编码是0x61,所以如果文件里的字节是0x61,文本编辑器就会认为是代表字母'a',显示出来。
下面是a.txt用editplus二进制viewer打开的读写的代码
/**
*
*/import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/**
* @author Administrator
*
*/
public class BinaryUtil {
public static void main(String[] args) throws IOException {
DataOutputStream out = new DataOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\a.txt"));
double[] prices = { 19.99, 9.99, 15.99, 3.99};
int[] units = { 12, 8, 13, 29 };
String[] descs = { "Java", "Source ", "and","Support."};
for (int i = 0; i < prices.length; i++) {
out.writeDouble(prices[i]);
out.writeChar('\t');
out.writeInt(units[i]);
out.writeChar('\t');
out.writeChars(descs[i]);
out.writeChar('\n');
}
out.close();
// read it in again
DataInputStream in = new DataInputStream(new FileInputStream(
"C:\\Users\\Administrator\\Desktop\\a.txt"));
double price;
int unit;
String desc;
double total = 0.0;
try {
while (true) {
price = in.readDouble();
in.readChar(); // throws out the tab
unit = in.readInt();
in.readChar(); // throws out the tab
desc = in.readLine();
System.out.println( unit );
System.out.println( price );
System.out.println( desc );
total = total + unit * price;
}
} catch (EOFException e) {
}
in.close();
}
}