大家帮我看看这个程序哪里出问题了?
怎么得不到我要的结果?
/**
 * 功能:
 *将文件夹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;
      }
}

解决方案 »

  1.   

    /**
     * 功能:
     *将文件夹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;
          }
    }