您的位置:首页 > 编程语言 > Java开发

Java实现分类文件拷贝4

2008-10-31 19:15 435 查看
tputStream fos=new FileOutputStream(objFile);

byte[] buf=new byte[1024];

int i=0;

while((i=fis.read(buf))!=-1){

fos.write(buf,0,i);

}

fis.close();

fos.close();

} catch(IOException ie){

ie.printStackTrace();

return false;

}

return true;

}

/**

* 生成配置文件

* @param pac 包路径

* @param path 文件路径

* @return 返回保存是否正确

*/

public boolean createCfg(){

File dir=new File(objPath);

String[] dirs=dir.list();

String curDir;

char sep=File.separatorChar;

String line;

for(int i=0;i<dirs.length;i++){

if(!new File(objPath+sep+dirs[i]).isDirectory()){

continue;

}

globalLine=null;

curDir=objPath+sep+dirs[i]+sep+"src";

getPath(curDir,null);

line=dirs[i]+":"+globalLine;

lines.add(line);

}

File cfgFile=new File(filePath+sep+configeFile);

saveCfg(cfgFile);

return true;

}

/**

* 递归收集

* @param root

* @param pack

*/

private void getPath(String root,String pack){

if(hasNoSub(root)){ //如果没有了子目录

if(globalLine==null){

globalLine=pack;

} else{

globalLine+="|"+pack;

}

return;

}

File dir=new File(root);

char sep=File.separatorChar;

String[] subs=dir.list();

for(int i=0;i<subs.length;i++){

String curPath=root+sep+subs[i];

File tmp=new File(curPath);

if(tmp.isDirectory()){

if(pack==null){ //如果是目录,则递归

getPath(curPath,subs[i]);

} else{

getPath(curPath,pack+"."+subs[i]);

}

}

}

}

/**

* 判断一个目录是否有子目录,没有返回true

* @param dir

* @return

*/

private boolean hasNoSub(String directory){

File dir=new File(directory);

if(!dir.isDirectory()){

return true;

}

String[] subs=dir.list();

for(int i=0;i<subs.length;i++){

File tmp=new File(dir+File.separator+subs[i]);

if(tmp.isDirectory()){

return false;

}

}

return true;

}

/**

*

* @param fileName

* @return

*/

private String getExt(String fileName){

int pos=fileName.lastIndexOf(".");

if(pos>0){

return fileName.substring(pos+1,fileName.length());

}

return null;

}

/**

* 循环处理一个文件夹

*/

public void excute(){

char sep=File.separatorChar;

File list=new File(filePath+sep+"list.txt");

File dir=new File(filePath);

if(!dir.exists()||!dir.isDirectory()){ //指定的不是目录

ps.println("指定上传文件的目录不正确");

return;

}

File cfgFile=new File(filePath+sep+configeFile);

try{

PrintStream psList=new PrintStream(new FileOutputStream(list));

if(!cfgFile.exists()&&!cfgFile.createNewFile()){ //配置文件不存在

ps.println("指定的配置文件不存在");

return;

}

if(!readCfg(cfgFile)){ //读入配置文件失败

ps.println("读入配置文件失败");

return;

}

File[] files=dir.listFiles();

if(files.length<2){ //没有要上传的文件

ps.println("指定的目录中没有文件");

return;

}

//逐个文件处理

for(int i=0;i<files.length;i++){

File curFile=files[i];

if(!curFile.isFile()||!getExt(curFile.getName()).equals("java")){

continue;

}

psList.println(curFile.getName());

//当前文件是java文件

String pac=readPac(curFile); //取该文件的包路径

ps.println("读包完成....");

if(pac==null){

// ps.println("文件读出包路径出错");

return;

}

String path=parsePac(pac,cfgFile); //通过package取路径

ps.println("解析完成....");

if(path==null){

ps.println("取文件的保存路径出错");

continue; //跳过这个文件

}

//组装成一个完整的路径

String fullPath=objPath+sep+path+sep+"src"+sep+pac.replace('.',sep);

ps.println("建立拷贝路径:"+fullPath);

if(!copy(curFile,fullPath)){

ps.println("拷贝文件失败"+curFile.getName());

continue;

}

curFile.delete();

ps.println("成功保存一个文件");

}

ps.println("成功保存所有文件");

if(!saveCfg(cfgFile)){

ps.println("保存配置文件失败");

return;

}

} catch(IOException ie){

ie.printStackTrace();

}

}

/**

* 构造函数

*/

public SaveFile(){

try{

File log=new File(filePath+File.separator+"cf.log");

if(log.exists()){

log.delete();

}

log.createNewFile();

FileOutputStream fos=new FileOutputStream(log);

ps=new PrintStream(fos);

} catch(IOException ie){

ie.printStackTrace();

System.out.print("创建日志失败!");

ps=System.out;

}

lines=new ArrayList();

}

public static void main(String[] args){

SaveFile sf=new SaveFile();

if(args.length==1){

if(args[0].equals("mc")){ //生成配置文件

sf.createCfg();

}

if(args[0].equals("cf")){ //完成分类拷贝工作

sf.excute();

}

} else{

sf.ps.println("请指定参数:\n mc 生成配置文件\n cf 拷贝文件");

return;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: