现在的位置: 首页 > 综合 > 正文

Java文件同步软件(源代码)

2013年12月10日 ⁄ 综合 ⁄ 共 4842字 ⁄ 字号 评论关闭

 这个Java软件一共有两个类,下面是FileOperator类

 

/**
 *<pre>
 *FileOperator
 *
@author 牟勇
 *版本:0.0.1 Build 18
 *创建日期:2007.6.6 20:36:03
 *功能说明:完成文件的复制,删除等功能
 *功能1:完成文件的复制
 *功能2:完成文件的删除
 *
 *版本:0.0.2 Build 52
 *修改日期:2007.6.6 16:12:26
 *增加:写待同步文件根目录至指定文件中
 *增加:同步文件的方法       
 *</pre>
 
*/

package com.speakmore.family.file;

import java.io.*;

public class FileOperator{
    
static FileInputStream br;
    
static FileOutputStream bw;
    
static PrintWriter pw=null;
    
/**
     *copyFile
     *复制源文件到目标文件
     *
@param targetFile 复制的目标文件名
     *
@param sourceFile 复制的源文件名
     *
@return 复制文件是否成功,true表示成功,false表示不成功
     *如果源文件名是一个目录且目标文件名不存在,则创建它
     *如果源文件名是一个目录且目标文件名存在,则忽略
     *如果源文件名是一个文件且目标文件名不存在,则创建它
     *如果源文件名是一个文件且比目标文件新,则覆盖它
     *如果源文件名是一个文件且比目标文件旧,则忽略
     *
     
*/

    
public static boolean copyFile(File targetFile,File sourceFile){
        
        
//如果源文件名是一个目录且目标文件名不存在,则创建它
        if(sourceFile.isDirectory()&&!targetFile.exists()){
            System.out.println(
"目录且不存在:"+targetFile.toString());
            targetFile.mkdirs();
            
return true;
        }

        
        
//如果源文件名是一个目录且目标文件名存在,则忽略
        if(sourceFile.isDirectory()&&targetFile.exists()){
            System.out.println(
"目录且存在:"+targetFile.toString());
            
return true;
        }

        
        
//如果源文件名是一个文件且目标文件名不存在,则创建它
        if(sourceFile.isFile()&&!targetFile.exists()){
            System.out.println(
"文件且文件不存在:"+targetFile.toString());
            
return writer(targetFile,sourceFile);
        }

         
//如果源文件名是一个文件且比目标文件新,则覆盖它
         if(sourceFile.isFile()&&sourceFile.lastModified()>
                                             targetFile.lastModified())
{
             System.out.println(
"文件且文件存在且要修改:"+targetFile.toString());
             
return writer(targetFile,sourceFile);
            
         }

    
         
//如果源文件名是一个文件且比目标文件旧,则忽略
         if(sourceFile.isFile()&&sourceFile.lastModified()<=
                                             targetFile.lastModified())
{
             System.out.println(
"文件且文件存在:"+targetFile.toString());
             
return true;
            
         }

        
//如果前五种条件都不符合,则表示无法复制文件,返回false
        return false;
    }

    
    
/**
     *copyFile
     *复制源文件到目标文件
     *
@param targetFilePath 复制的目标文件路径
     *
@param sourceFilePath 复制的源文件路径
     *
@return 复制文件是否成功,true表示成功,false表示不成功
     *如果源文件名是一个目录且目标文件名不存在,则创建它
     *如果源文件名是一个目录且目标文件名存在,则忽略
     *如果源文件名是一个文件且目标文件名不存在,则创建它
     *如果源文件名是一个文件且比目标文件新,则覆盖它
     *如果源文件名是一个文件且比目标文件旧,则忽略
     
*/

    
public static boolean copyFile(String targetFilePath,String sourceFilePath){
        
return copyFile(new File(targetFilePath),new File(sourceFilePath));
    }

    
    
/**
     *deleteFile
     *删除目标文件
     *
@param targetFile 将被删除的文件
     *
@return true表示删除成功,false表示不成功
     
*/

    
public static boolean deleteFile(File targetFile){
        
return targetFile.delete();
    }

    
    
/**
     *deleteFile
     *删除目标文件
     *
@param targetFilePath 将被删除的文件路径
     *
@return true表示删除成功,false表示不成功
     
*/

    
public static boolean deleteFile(String targetFilePath){
        
return deleteFile(new File(targetFilePath));
    }

    
    
    
//使用io对文件进行读写
    private static boolean writer(File targetFile,File sourceFile){
        String tempstr
="";
            
try{
                br
=new FileInputStream(sourceFile);
                bw
=new FileOutputStream(targetFile);
                
byte[] fileContent=new byte[1024];
                
int readed=0;
                
int readSum=0;
                
                
while((readed=br.read(fileContent))!=-1){
                    readSum
+=readed;
                    bw.write(fileContent);
                }

                                
                bw.close();
                br.close();
                
                
return true;
            }
catch(Exception e){
                e.printStackTrace();
                
return false;
            }

    }

    
/**
     *writeFileIndex
     *将需要搜索的整个文件目录树写入指定的文件中
     *
@param filePath 需要搜索的文件根目录
     *
@param filename 指定的写入文件名
     *
@return 无
     
*/

    
public static boolean writeFileIndex(String filePath,String filename){
        
boolean flag=false;
        
try{
            
//创建索引文件
            pw=new PrintWriter(new BufferedWriter(
                                    
new FileWriter(filename)));
        }
catch(IOException e){
            e.printStackTrace();
        }

        
        String[] temp
=new File(filePath).list();
        
            pw.println(filePath);
            
for(int i=0;i<temp.length;i++){                
                
if(new File(filePath+File.separator+temp[i]).isFile()){
                    pw.println(filePath
+File.separator+temp[i]);
                    flag
=true;
                }

                
else{
                    flag
=writeFileIndex(filePath+File.separator+temp[i],filename);
                }

            }

        
        
        pw.flush();
        
return flag;

抱歉!评论已关闭.