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

写了一段很简单的实用程序,现在挂在这,望大家多给板砖!!!
创作背景:
      我这段时间在研究别人代码,可老对屏幕对眼不好,也不能很集中地进行分析,就想把那些代码打印出来,刚开始的时候,看的程序代码少,也就一两个类文件,后来看的程序长了,动不动就是十来个类文件,那样在打印时为了省纸就得先把那些类文件一个一个地拷到另一个文件中,但文件一多,就容易出错,有时不是漏拷了文件就是某个文件多拷了几次,而且每次都得核对是否拷完。这样的核对太麻烦了,于是就想着自己编个实用程序,一来满足自己的需求,二来也练练手。于是就有了下面的这段程序。
    肯定有好多不足的地方,希望大家多多给板砖。

package   copyall;

import   java.io.BufferedReader;
import   java.io.BufferedWriter;
import   java.io.File;
import   java.io.FileReader;
import   java.io.FileWriter;

public   class   CopyAll   {

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   throws   Exception   {
//   TODO   Auto-generated   method   stub
/*for(int   i   =0;i <listFileOfDir(args[0]).length();i++){

}*/
File   ori   =   new   File(args[0]);
File[]   list   =   ori.listFiles();

File   out   =   new   File(args[1]);

for(int   i=0;i <list.length;i++){
readAndWrite(list[i],out);
}

}

static   void   readAndWrite(File   fileList,File   fileout)   throws   Exception{
                //define   the   file   of   original
//File   fileIn   =   new   File(fileList);
//这里有个疑问:在程序的执行的当前目录下,怎么来区分args[]是否为相对目录与绝对目录

FileReader   fr   =   new   FileReader(fileList);
BufferedReader   bf   =   new   BufferedReader(fr);
//在这好像可以直接应用args[]作为行参来调用FileReader吧???

FileWriter   fw   =   new   FileWriter(fileout,true);
BufferedWriter   bw   =   new   BufferedWriter(fw);
//在这好像可以用到PipedStream这么个类来把这两个Stream连接起来吧???

//String   line;//好像不行的吧???那又该怎么办呢??先试试吧
char[]   c     =   new   char[1000];//看来不能太长了,那多长就合适了呢???
    //现在的一个问题就是源文件一长,那个c就不够用,再有就是source文件就乱码!!!
                      //如何来改进呢?????
//可以动态地设置一个flag用来显示是否到达文件的尾部
//String   line   =   null;
int   tok;
while((tok=bf.read(c))!=-1){//怎么用了buffer后少了第一个文件了呢???

bw.write(c);//太好了,上面的那个true就可以把这个问题搞定!!!哈哈!!!!
//这样可能就覆盖了已读入的第一份文件吧???
//好像有个append方法,试试看
//fw.append(c.toString());//还是不对呀,怎么只打印出个序列号呢???
       
}

fr.close();
fw.close();//刚才没有调用这个close方法,是不是就造成了刚才那个In.txt文件中没有内容呢??

}
        static   File[]   listFileOfDir(File   dir){
        //File   []   list   =   new   File[100];
       
        return   dir.listFiles();
        }
}

我本来想多给分的,可现在就10分了,:(

------解决方案--------------------
不错
有实用价值