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中出现的是乱码??请高手帮忙

解决方案 »

  1.   

    int i=din.readInt(); 
    float f=din.readFloat(); 
    boolean b=din.readBoolean(); 
    din.close(); 
    这个写法很不规则
    应该用一个while循环 里面判断是否读到文件末尾
      

  2.   

    readInt 读取四个输入字节并返回一个 int 值
    readFloat 读取四个输入字节并返回一个 float 值
    readBoolean 读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false
    头两个要用得用循环,还要保证文本的总字节是4个倍数,不然会有异常,
    最后一个是读不出来原文件的。
      

  3.   

    int i=din.readInt(); 
    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(); 
    }下面的类推·~
      

  4.   

    貌似不在鼓励str=din.readLine())!=-1,会报错了
      

  5.   


    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);
    }
    }
    }先格式化一下慢慢看
      

  6.   


    楼主你对那几个方法的意义没搞清楚
    乱码产生的主要原因是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);
        } 
      

  7.   

    如果在mmxxjj.txt中文本。执行之后,在ttff.txt中出现的是乱码??请高手帮 这句话是什么意思?
    是不是mmxxjj.txt里面是中文内容?