日期:2014-05-20  浏览次数:20728 次

为什么用length方法获得的文件长度总为0
代码如下:
              import   java.io.*;


public   class   Shiyan13B   {


public   static   void   main(String[]   args)throws   IOException   {
File   Newfile   =new   File( "e:\\new.txt ");
Newfile.createNewFile();

FileOutputStream   OutFile=   new   FileOutputStream( "e:\\new.txt ");
BufferedOutputStream   outs=new   BufferedOutputStream(OutFile);
DataOutputStream   out=new   DataOutputStream(outs);
File   file=   new   File( "d:\\ ");
String   []name=file.list();
        File   []Subfile=file.listFiles();
for(int   i=0;i <name.length;i++){

if(Subfile[i].isDirectory()){
   
    String   []tmp=Subfile[i].list();
    for(int   stmp=0;stmp <tmp.length;stmp++){
          System.out.println( "\t\t "+tmp[stmp]);
    }
}
else
System.out.println( "\t "+name[i]);
}
String   []Textname   =file.list(new   FileText());
for(int   i=0;i <Textname.length;i++){
File   tmp_file=new   File(Textname[i]);
//System.out.println( "\t "+Textname[i]);
System.out.println( "文件名: "+tmp_file.getName());
System.out.println( "文件大小: "+tmp_file.length()+ "字节 ");
System.out.println( "绝对路径: "+tmp_file.getAbsolutePath());
        }

for(int   i=0;i <Subfile.length;i++){
if(Subfile[i].isDirectory()){
;
        String   []tmp_Text=Subfile[i].list(new   FileText());
        for(int   k=0;k <tmp_Text.length;k++){
    File   tmp_file=new   File(tmp_Text[k]);
   
    System.out.println( "文件名: "+tmp_file.getName());
    System.out.println( "文件大小: "+tmp_file.length()+ "字节 ");
    System.out.println( "绝对路径: "+tmp_file.getAbsolutePath());
        }
  }

}
out.close();
}

}
class   FileText   implements   FilenameFilter{
public   boolean   accept(File   dir,String   s){
if(s.endsWith( ".txt "))
return   true;
else  
return   false;
}

}
功能是想列出指定目录的文件与子目录,并将该目录及其子目录下所有txt文件的路径名、文件名、文件大小等信息保存到指定的文件中。可是结果显示文件大小总是为0字节.
还有如何将文件的信息保存到指定文件.

------解决方案--------------------
File tmp_file = new File(Textname[i]);

没有包含路径,表示在当前路径下,看看是不是你要 的在d:\\下的