dexline4 2011-09-18 21:02
浏览 412
已采纳

一个简单的读取文件为啥搞成了死循环?

 

import java.io.*;

 

public class TestMove{

private static File f1=null;

private static File f2=null;

private static FileInputStream fis=null;

private static FileOutputStream fos=null;

 

public static void main(String []args){

new TestMove("D:\\f1\\file1.txt","D:\\f2\\file2.txt").startCopy();

}

 

public TestMove(String f1,String f2){

try{

this.f1=new File(f1);

this.f2=new File(f2);

fis=new FileInputStream(this.f1);

fos=new FileOutputStream(this.f2);

}catch(IOException e){

System.out.print("wrong!");

}

 

}

public void startCopy(){

System.out.println(f1.length());

try{

 

for(int take=fis.read();take!=-1;){

System.out.print(""+take);

System.out.print(""+(char)take);

//fos.write(take);

}

fis.close();

//fos.close();

}catch(IOException e){

System.out.println("Something is wrong!");

}

}

}

  • 写回答

2条回答 默认 最新

  • _1_1_7_ 2011-09-18 21:18
    关注

    [code="java"]
    for (int take = fis.read(); take != -1;take = fis.read()) {

                System.out.print("" + take);
    
                System.out.print("" + (char) take);
    
                // fos.write(take);
    
            }
    

    [/code]
    好晕的代码,你一直在打印第一个字符,当然死循环;
    你这样copy文件,效率也不高。用BufferedInputStream

    循环体也可以改为
    int take;
    while((take=fis.read())!=-1){
    ....
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?