import java.io.*;
public class File5 { public static void main(String[] args) throws IOException{
int ch;
File file1=new File("f:\\mmxxjj\\mmxxjj.txt");
File file2=new File("f:\\ttff\\ttff.txt");
try
{
FileInputStream fin=new FileInputStream(file1);
DataInputStream din=new DataInputStream(fin);
int i=din.readInt();
float f=din.readFloat();
boolean b=din.readBoolean();
din.close();
FileOutputStream fout=new FileOutputStream(file2);
DataOutputStream dout=new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
System.out.println("整数:"+i);
System.out.println("浮点:"+f);
System.out.println("布尔:"+b);
}
catch(FileNotFoundException e)
{System.out.println(e);}
catch(IOException e)
{System.out.println(e);}
}
}
这是一小段对文件操作的代码,如果在mmxxjj.txt中文本。执行之后,在ttff.txt中出现的是乱码??请高手帮忙
public class File5 { public static void main(String[] args) throws IOException{
int ch;
File file1=new File("f:\\mmxxjj\\mmxxjj.txt");
File file2=new File("f:\\ttff\\ttff.txt");
try
{
FileInputStream fin=new FileInputStream(file1);
DataInputStream din=new DataInputStream(fin);
int i=din.readInt();
float f=din.readFloat();
boolean b=din.readBoolean();
din.close();
FileOutputStream fout=new FileOutputStream(file2);
DataOutputStream dout=new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
System.out.println("整数:"+i);
System.out.println("浮点:"+f);
System.out.println("布尔:"+b);
}
catch(FileNotFoundException e)
{System.out.println(e);}
catch(IOException e)
{System.out.println(e);}
}
}
这是一小段对文件操作的代码,如果在mmxxjj.txt中文本。执行之后,在ttff.txt中出现的是乱码??请高手帮忙
float f=din.readFloat();
boolean b=din.readBoolean();
din.close();
这个写法很不规则
应该用一个while循环 里面判断是否读到文件末尾
readFloat 读取四个输入字节并返回一个 float 值
readBoolean 读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false
头两个要用得用循环,还要保证文本的总字节是4个倍数,不然会有异常,
最后一个是读不出来原文件的。
float f=din.readFloat();
boolean b=din.readBoolean();
din.close();
应当为:
String str = "";
while((str=din.readLine())!=-1){
int i=din.readInt();
float f=din.readFloat();
boolean b=din.readBoolean();
}下面的类推·~
import java.io.*;public class File5 { public static void main(String[] args) throws IOException {
int ch;
File file1 = new File("f:\\mmxxjj\\mmxxjj.txt");
File file2 = new File("f:\\ttff\\ttff.txt");
try {
FileInputStream fin = new FileInputStream(file1);
DataInputStream din = new DataInputStream(fin);
int i = din.readInt();
float f = din.readFloat();
boolean b = din.readBoolean();
din.close();
FileOutputStream fout = new FileOutputStream(file2);
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
System.out.println("整数:" + i);
System.out.println("浮点:" + f);
System.out.println("布尔:" + b);
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}先格式化一下慢慢看
楼主你对那几个方法的意义没搞清楚
乱码产生的主要原因是boolean b=din.readBoolean(); dout.writeBoolean(b);这两个方法
看下源代码:
public final boolean readBoolean() throws IOException {
int ch = in.read();
if (ch < 0)
throw new EOFException();
return (ch != 0);
}
public final void writeBoolean(boolean v) throws IOException {
out.write(v ? 1 : 0);
incCount(1);
}
是不是mmxxjj.txt里面是中文内容?