java 程序急救

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:30:51
我的键盘输入内容 如下:
123
2.3
true
可运行后,dataFile.txt文件中的内容是乱码?
请高手指点指点,谢谢!
必有分谢答

import java.io.*;
public class File4
{
public static void main(String[] args)
{
int ch;
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin =new BufferedReader(iin);
File file1=new File("c:\\jdk1.3\\example\\dataFile.txt");
try
{
FileOutputStream fout= new FileOutputStream(file1);
DataOutputStream dout =new DataOutputStream(fout);
System.out.println(" 输入整数");
int i=Integer.parseInt(bin.readLine());
System.out.println(" 输入浮点数");
float f=Float.parseFloat(bin.readLine());
System.out.println(" 输入布尔量");
boolean b=new Boolean(bin.readLine()).booleanValue();
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
}
catch (FileNotFoundExcepti

这个跟java中的编码有关。
writeInt() :将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。
dout.writeFloat():使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。
dout.writeBoolean():将一个 boolean 值以 1-byte 值形式写入基础输出流。值 true 以值 (byte)1 的形式被写出;值 false 以值 (byte)0 的形式被写出。
将这样的数据写入文本文件(XP中.txt文件默认是Ansi),自然是乱码。
如果想要输出结果为
123
2.3
true
有一种方法,可以先把这些数据转换成字符串,再用writeBytes()写入。

换行的话,再
加入
BufferedWriter deee = new BufferedWriter(new FileWriter(file1));
deee.newLine();
deee.flush();
deee.close();

这段代码,我自己调试过了。。。

import java.io.*;
public class Test
{
public static void main(String[] args)
{
int ch;
InputStreamReader iin=new InputStreamReader(System.in);
BufferedReader bin =new BufferedReader(iin);
File file1=new File("dataFile.txt");
try
{
FileOutputStream fout= new FileOutputStream(file1);
BufferedWrit