CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

文件的合并问题

楼主nihao620(Emmy)2006-11-03 19:43:04 在 Java / J2SE / 基础类 提问

大家帮我看看这个程序哪里出问题了?  
  怎么得不到我要的结果?  
  /**  
    *   功能:  
    *将文件夹a里所有文本文件的数据读入文件夹b中,  
    *   并将其平均分割为10k的文件,  
    *   文件名分别为1.txt,2.txt   ......  
    */  
  import   java.io.*;  
  import   java.util.*;  
  public   class   IoDemo   {  
          RandomAccessFile   rfin;  
          RandomAccessFile   rfout;  
          static   int   j=1;  
          static   File   goal   =   new   File("b"   +File.separator+   j   +   ".txt");  
          public   static   void   main(String   args[])  
              {  
                      IoDemo   demo   =   new   IoDemo();  
                      File   f1=new   File("a");  
                      Vector   v=demo.getAllFile(f1);  
                      File   f;  
                      for   (int   i   =   0;   i   <   v.size();   i++)   {  
                              System.out.println("in   "+i+"   file");  
                              f=(File)v.elementAt(i);  
                              demo.write(f);  
                      }  
              }  
              private   void   write(File   source){  
                      try   {  
                              rfin=   new   RandomAccessFile(source,"r");  
                              rfout=   new   RandomAccessFile(goal,"rwd");  
                              char   ch;  
                              //判断是否读到文件的结尾  
                              while(rfin.getFilePointer()<source.length()-1){  
                                      ch=rfin.readChar();  
                                      rfout.writeChar(ch);  
                                      if(goal.length()>=10240)  
                                      {  
                                              rfout.close();  
                                              System.out.println("j="+j);  
                                              j++;  
                                              goal   =   new   File("b"   +File.separator+   j   +   ".txt");  
                                              rfout   =   new   RandomAccessFile(goal,   "rwd");  
                                      }  
                              }  
                              rfin.close();  
                      }   catch   (FileNotFoundException   ex)   {  
                      }   catch   (IOException   ex)   {  
                              ex.printStackTrace();  
                      }  
              }  
              private   Vector   getAllFile(File   f)  
              {  
                      File[]   file   =   f.listFiles();  
                      Vector   v   =   new   Vector();  
                      for   (int   i   =   0;   i   <   file.length;   i++)   {  
                              if   (file[i].isDirectory())   {  
                                      getAllFile(file[i]);  
                              }  
                              else   if(file[i].isFile()&&(file[i].getName().endsWith(".txt")))  
                              {  
                                      v.add(file[i]);  
                              }  
                      }  
                      return   v;  
              }  
  }  
  问题点数:50、回复次数:2Top

1 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2006-11-03 19:51:32 得分 0

能不能加点注释,这样看很累的Top

2 楼nihao620(Emmy)回复于 2006-11-03 20:12:17 得分 0

/**  
    *   功能:  
    *将文件夹a里所有文本文件的数据读入文件夹b中,  
    *   并将其平均分割为10k的文件,  
    *   文件名分别为1.txt,2.txt   ......  
    */  
  import   java.io.*;  
  import   java.util.*;  
  public   class   IoDemo   {  
          static   RandomAccessFile   rfin;  
          static   RandomAccessFile   rfout;  
          static   int   j=1;  
          static   File   goal   =   new   File("b"   +File.separator+   j   +   ".txt");  
          public   static   void   main(String   args[])  
              {  
                      IoDemo   demo   =   new   IoDemo();  
                      File   f1=new   File("a");  
                      Vector   v=demo.getAllFile(f1);  
                      File   f;  
                      for   (int   i   =   0;   i   <   v.size();   i++)   {  
                              System.out.println("in   "+i+"   file");  
                              f=(File)v.elementAt(i);  
                              demo.write(f);  
                      }  
                      try{  
                if(rfin!=null)  
          rfin.close();  
                if(rfout!=null)  
          rfout.close();  
        }catch(IOException   e){}  
              }  
  /*  
  将文件source的数据读到文件夹goal中,另取名字为1.txt,2.txt....  
  */  
   
              private   void   write(File   source){  
                      try   {  
                              rfin=   new   RandomAccessFile(source,"r");  
                              rfout=   new   RandomAccessFile(goal,"rwd");  
                              char   ch;  
                              //判断是否读到文件的结尾  
                              while(rfin.getFilePointer()<source.length()-1){  
                                      ch=rfin.readChar();  
                                      rfout.writeChar(ch);  
  //判断文件的大小  
                                      if(goal.length()>=10240)  
                                      {  
                                              rfout.close();  
                                              System.out.println("j="+j);  
                                              j++;  
  //新建另一个文件和输出流  
                                              goal   =   new   File("b"   +File.separator+   j   +   ".txt");  
                                              rfout   =   new   RandomAccessFile(goal,   "rwd");  
                                      }  
                              }  
                              rfin.close();  
                      }   catch   (FileNotFoundException   ex)   {  
                      }   catch   (IOException   ex)   {  
                              ex.printStackTrace();  
                      }  
              }  
  /*  
  获取文件f中的所有文本文件,将它们放入向量v中返回。  
  */  
              private   Vector   getAllFile(File   f)  
              {  
                      File[]   file   =   f.listFiles();  
                      Vector   v   =   new   Vector();  
                      for   (int   i   =   0;   i   <   file.length;   i++)   {  
                              if   (file[i].isDirectory())   {  
                                      getAllFile(file[i]);  
                              }  
                              else   if(file[i].isFile()&&(file[i].getName().endsWith(".txt")))  
                              {  
                                      v.add(file[i]);  
                              }  
                      }  
                      return   v;  
              }  
  }  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:nihao620

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo