问题描述
importjava.io.*;publicclassFile5{publicstaticvoidmain(String[]args)throwsIOException{intch;Filefile1=newFile("f:\mmxxjj\mmxxjj.txt");Filefile2=newFile("f:\ttff\ttff.txt");try{FileInputStreamfin=newFileInputStream(file1);DataInputStreamdin=newDataInputStream(fin);inti=din.readInt();floatf=din.readFloat();booleanb=din.readBoolean();din.close();FileOutputStreamfout=newFileOutputStream(file2);DataOutputStreamdout=newDataOutputStream(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(FileNotFoundExceptione){System.out.println(e);}catch(IOExceptione){System.out.println(e);}}}这是一小段对文件操作的代码,如果在mmxxjj.txt中文本。执行之后,在ttff.txt中出现的是乱码??请高手帮忙
解决方案
解决方案二:
inti=din.readInt();floatf=din.readFloat();booleanb=din.readBoolean();din.close();这个写法很不规则应该用一个while循环里面判断是否读到文件末尾
解决方案三:
实在是看不懂诶.还没学到这里.等我回合了.再来教你啊.
解决方案四:
readInt读取四个输入字节并返回一个int值readFloat读取四个输入字节并返回一个float值readBoolean读取一个输入字节,如果该字节不是零,则返回true,如果是零,则返回false头两个要用得用循环,还要保证文本的总字节是4个倍数,不然会有异常,最后一个是读不出来原文件的。
解决方案五:
inti=din.readInt();floatf=din.readFloat();booleanb=din.readBoolean();din.close();应当为:Stringstr="";while((str=din.readLine())!=-1){inti=din.readInt();floatf=din.readFloat();booleanb=din.readBoolean();}下面的类推·~
解决方案六:
貌似不在鼓励str=din.readLine())!=-1,会报错了
解决方案七:
学习
解决方案八:
不知从何帮起……
解决方案九:
学习
解决方案十:
importjava.io.*;publicclassFile5{publicstaticvoidmain(String[]args)throwsIOException{intch;Filefile1=newFile("f:\mmxxjj\mmxxjj.txt");Filefile2=newFile("f:\ttff\ttff.txt");try{FileInputStreamfin=newFileInputStream(file1);DataInputStreamdin=newDataInputStream(fin);inti=din.readInt();floatf=din.readFloat();booleanb=din.readBoolean();din.close();FileOutputStreamfout=newFileOutputStream(file2);DataOutputStreamdout=newDataOutputStream(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(FileNotFoundExceptione){System.out.println(e);}catch(IOExceptione){System.out.println(e);}}}
先格式化一下慢慢看
解决方案十一:
引用3楼gukuitian的回复:
readInt读取四个输入字节并返回一个int值readFloat读取四个输入字节并返回一个float值readBoolean读取一个输入字节,如果该字节不是零,则返回true,如果是零,则返回false头两个要用得用循环,还要保证文本的总字节是4个倍数,不然会有异常,最后一个是读不出来原文件的。
楼主你对那几个方法的意义没搞清楚乱码产生的主要原因是booleanb=din.readBoolean();dout.writeBoolean(b);这两个方法看下源代码:publicfinalbooleanreadBoolean()throwsIOException{intch=in.read();if(ch<0)thrownewEOFException();return(ch!=0);}publicfinalvoidwriteBoolean(booleanv)throwsIOException{out.write(v?1:0);incCount(1);}
解决方案十二:
如果在mmxxjj.txt中文本。执行之后,在ttff.txt中出现的是乱码??请高手帮这句话是什么意思?是不是mmxxjj.txt里面是中文内容?