import java.io.*;
public class Hello{
public static void main(String[] args){
try{
// 通过DataInputStream数据输入流把readme.txt中的内容读出来
// 通过DataOutputStream数据输出流把readme.txt的内容写入文件readme.out中
DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("readme.out"),512));
BufferedReader in=new BufferedReader(new FileReader("readme.txt"));
String s;
while((s=in.readLine())!=null){
System.out.println(s);
//1 源文件为readme.txt,里面的内容是中文和英文,可以显示(不是乱码)
//2 要求通过OutputStream将readme.txt写入一个二进制文件(要求可以显示,不是乱码)
// s为二进制代码,现在是无论转码与否s都是乱码
out.write(s.getBytes());//取得字符串对应的二进制码,然后再写入文件中
byte[] t;
t="\n?0aA".getBytes();
for(int i=0;i<t.length;i++)
{
System.out.print(t[i]);
//out.writeInt(t[i]);//把二进制代码写入文件中
}
out.write(t);//把二进制代码写入文件中
out.write("subj哈哈\n".getBytes("gb2312"));//根据"gb2312"编码取得字符串的二进制码数组
}
in.close();
out.flush();
out.close();
// 通过DataOutputStream数据输出流把浮点型、整型、真假型、字符型、字符串型写入文件sample.out中
/* 但是sample.out文件中的浮点型、整型、真假型乱码,因为存储的是二进制文件编码,
* 用记事本打开看到的是相应的assca码值
* 如:
* a对应的assca码为97
* 10:显示为换行
* 63: 显示为?
* 48: 显示为0
* 97: 显示为a
* 65: 显示为A
*/
double pi=3.1415;
int i=10;
boolean okay=true;
char ch='J';
String s1="Java C 0 Pascal123123123 苏标记!";
FileOutputStream fsout=new FileOutputStream("sample.out");
DataOutputStream out1=new DataOutputStream(fsout);
out1.writeDouble(pi); //向文件写入浮点型数据
out1.writeInt(i); //向文件写入整形数据
out1.writeBoolean(okay); //向文件写入booleen型数据
out1.writeChar(ch); //向文件写入字符型数据
out1.writeUTF(s1); //向文件写入字符串数据
out1.close();
// 通过DataInputStream数据输入流把浮点型、整型、真假型、字符型、字符串型从文件sample.out中读出来
FileInputStream fsin=new FileInputStream("sample.out");
DataInputStream in1=new DataInputStream(fsin);
pi=in1.readDouble();
i=in1.readInt();
okay=in1.readBoolean();
ch=in1.readChar();
s1=in1.readUTF();
in1.close();
System.out.println("pi="+pi+", i="+i);
System.out.println("okay="+okay+", ch="+ch);
System.out.println("s="+s1);
}catch(Exception e){
e.printStackTrace();
}
}
}
我在readme.txt中的内容为:renwenchao1111
输出的文件sample.out的内容乱码
eclipse对话框中的输出为:renwenchao1111
063489765pi=3.1415, i=10
okay=true, ch=Js=Java C 0 Pascal123123123 苏标记!