`

File Util

    博客分类:
  • Java
 
阅读更多
/**
 * 
 */
package src.com;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

/**
 * @author 43545520
 * 
 */
public class FileUtil {

	/**
	 * 复制目录下的文件(不包括该目录)到指定目录,会连同子目录一起复制过去。
	 * 
	 * @param targetFile
	 * @param path
	 */
	public static void copyFileFromDir(String targetDir, String path) {
		File file = new File(path);
		createFile(targetDir, false);
		if (file.isDirectory()) {
			copyFileToDir(targetDir, listFile(file));
		}
	}

	/**
	 * 复制目录下的文件(不包含该目录和子目录,只复制目录下的文件)到指定目录。
	 * 
	 * @param targetDir
	 * @param path
	 */
	public static void copyFileOnly(String targetDir, String path) {
		File file = new File(path);
		File targetFile = new File(targetDir);
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File subFile : files) {
				if (subFile.isFile()) {
					copyFile(targetFile, subFile);
				}
			}
		}
	}

	/**
	 * 复制目录到指定目录。targetDir是目标目录,path是源目录。 该方法会将path以及path下的文件和子目录全部复制到目标目录
	 * 
	 * @param targetDir
	 * @param path
	 */
	public static void copyDir(String targetDir, String path) {
		File targetFile = new File(targetDir);
		createFile(targetFile, false);
		File file = new File(path);
		if (targetFile.isDirectory() && file.isDirectory()) {
			copyFileToDir(targetFile.getAbsolutePath() + "/" + file.getName(),
					listFile(file));
		}
	}

	/**
	 * 复制一组文件到指定目录。targetDir是目标目录,filePath是需要复制的文件路径
	 * 
	 * @param targetDir
	 * @param filePath
	 */
	public static void copyFileToDir(String targetDir, String... filePath) {
		if (targetDir == null || "".equals(targetDir)) {
			System.out.println("参数错误,目标路径不能为空");
			return;
		}
		File targetFile = new File(targetDir);
		if (!targetFile.exists()) {
			targetFile.mkdir();
		} else {
			if (!targetFile.isDirectory()) {
				System.out.println("参数错误,目标路径指向的不是一个目录!");
				return;
			}
		}
		for (String path : filePath) {
			File file = new File(path);
			if (file.isDirectory()) {
				copyFileToDir(targetDir + "/" + file.getName(), listFile(file));
			} else {
				copyFileToDir(targetDir, file, "");
			}
		}
	}

	/**
	 * 复制文件到指定目录。targetDir是目标目录,file是源文件名,newName是重命名的名字。
	 * 
	 * @param targetFile
	 * @param file
	 * @param newName
	 */
	public static void copyFileToDir(String targetDir, File file, String newName) {
		String newFile = "";
		if (newName != null && !"".equals(newName)) {
			newFile = targetDir + "/" + newName;
		} else {
			newFile = targetDir + "/" + file.getName();
		}
		File tFile = new File(newFile);
		copyFile(tFile, file);
	}

	/**
	 * 复制文件。targetFile为目标文件,file为源文件
	 * 
	 * @param targetFile
	 * @param file
	 */
	public static void copyFile(File targetFile, File file) {
		if (targetFile.exists()) {
			System.out.println("文件" + targetFile.getAbsolutePath()
					+ "已经存在,跳过该文件!");
			return;
		} else {
			createFile(targetFile, true);
		}
		System.out.println("复制文件" + file.getAbsolutePath() + "到"
				+ targetFile.getAbsolutePath());
		try {
			InputStream is = new FileInputStream(file);
			FileOutputStream fos = new FileOutputStream(targetFile);
			byte[] buffer = new byte[1024];
			while (is.read(buffer) != -1) {
				fos.write(buffer);
			}
			is.close();
			fos.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static String[] listFile(File dir) {
		String absolutPath = dir.getAbsolutePath();
		String[] paths = dir.list();
		String[] files = new String[paths.length];
		for (int i = 0; i < paths.length; i++) {
			files[i] = absolutPath + "/" + paths[i];
		}
		return files;
	}

	public static void createFile(String path, boolean isFile) {
		createFile(new File(path), isFile);
	}

	public static void createFile(File file, boolean isFile) {
		if (!file.exists()) {
			if (!file.getParentFile().exists()) {
				createFile(file.getParentFile(), false);
			} else {
				if (isFile) {
					try {
						file.createNewFile();
					} catch (IOException e) {
						e.printStackTrace();
					}
				} else {
					file.mkdir();
				}
			}
		}
	}

	
	
	/** *//**获得控制台用户输入的信息  
     * @return  
     * @throws IOException  
     */  
    public String getInputMessage() throws IOException{   
        System.out.println("请输入您的命令∶");   
        byte buffer[]=new byte[1024];   
        int count=System.in.read(buffer);   
        char[] ch=new char[count-2];//最后两位为结束符,删去不要   
        for(int i=0;i<count-2;i++)   
            ch[i]=(char)buffer[i];   
        String str=new String(ch);   
        return str;   
    }  
    /** *//**以文件流的方式复制文件  
     * @param src 文件源目录  
     * @param dest 文件目的目录  
     * @throws IOException    
     */  
    public void copyFile(String src,String dest) throws IOException{   
        FileInputStream in=new FileInputStream(src);   
        File file=new File(dest);   
        if(!file.exists())   
            file.createNewFile();   
        FileOutputStream out=new FileOutputStream(file);   
        int c;   
        byte buffer[]=new byte[1024];   
        while((c=in.read(buffer))!=-1){   
            for(int i=0;i<c;i++)   
                out.write(buffer[i]);           
        }   
        in.close();   
        out.close();   
    }  
    public void StringBufferDemo() throws IOException{   
        File file=new File("/root/sms.log");   
        if(!file.exists())   
            file.createNewFile();   
        FileOutputStream out=new FileOutputStream(file,true);           
        for(int i=0;i<10000;i++){   
            StringBuffer sb=new StringBuffer();   
            sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 ");   
            out.write(sb.toString().getBytes("utf-8"));   
        }           
        out.close();   
    } 
    /** *//**文件重命名  
     * @param path 文件目录  
     * @param oldname  原来的文件名  
     * @param newname 新文件名  
     */  
    public void renameFile(String path,String oldname,String newname){   
        if(!oldname.equals(newname)){//新的文件名和以前文件名不同时,才有必要进行重命名   
            File oldfile=new File(path+"/"+oldname);   
            File newfile=new File(path+"/"+newname);   
            if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名   
                System.out.println(newname+"已经存在!");   
            else{   
                oldfile.renameTo(newfile);   
            }    
        }            
    }  
    /** *//**转移文件目录  
     * @param filename 文件名  
     * @param oldpath 旧目录  
     * @param newpath 新目录  
     * @param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作  
     */  
    public void changeDirectory(String filename,String oldpath,String newpath,boolean cover){   
        if(!oldpath.equals(newpath)){   
            File oldfile=new File(oldpath+"/"+filename);   
            File newfile=new File(newpath+"/"+filename);   
            if(newfile.exists()){//若在待转移目录下,已经存在待转移文件   
                if(cover)//覆盖   
                    oldfile.renameTo(newfile);   
                else  
                    System.out.println("在新目录下已经存在:"+filename);   
            }   
            else{   
                oldfile.renameTo(newfile);   
            }   
        }          
    }  
//    /** *//**从目录中读取xml文件  
//     * @param path 文件目录  
//     * @return  
//     * @throws DocumentException  
//     * @throws IOException  
//     */  
//    public Document readXml(String path) throws DocumentException, IOException{   
//        File file=new File(path);   
//        BufferedReader bufferedreader = new BufferedReader(new FileReader(file));   
//        SAXReader saxreader = new SAXReader();   
//        Document document = (Document)saxreader.read(bufferedreader);   
//        bufferedreader.close();   
//        return document;   
//    }  
    /** *//**创建文件夹  
     * @param path  目录  
     */  
    public void createDir(String path){   
        File dir=new File(path);   
        if(!dir.exists())   
            dir.mkdir();   
    } 
    
    /** *//**创建新文件  
     * @param path 目录  
     * @param filename 文件名  
     * @throws IOException  
     */  
    public void createFile(String path,String filename) throws IOException{   
        File file=new File(path+"/"+filename);   
        if(!file.exists())   
            file.createNewFile();   
    } 
    
    /** *//**删除文件  
     * @param path 目录  
     * @param filename 文件名  
     */  
    public void delFile(String path,String filename){   
        File file=new File(path+"/"+filename);   
        if(file.exists()&&file.isFile())   
            file.delete();   
    } 
    
    /** *//**递归删除文件夹  
     * @param path  
     */  
    public void delDir(String path){   
        File dir=new File(path);   
        if(dir.exists()){   
            File[] tmp=dir.listFiles();   
            for(int i=0;i<tmp.length;i++){   
                if(tmp[i].isDirectory()){   
                    delDir(path+"/"+tmp[i].getName());   
                }   
                else{   
                    tmp[i].delete();   
                }   
            }   
            dir.delete();   
        }   
    }  
    
    /** *//**读文件  
     * @param path  
     * @return  
     * @throws IOException  
     */  
    public String BufferedReaderDemo(String path) throws IOException{   
        File file=new File(path);   
        if(!file.exists()||file.isDirectory())   
            throw new FileNotFoundException();   
        BufferedReader br=new BufferedReader(new FileReader(file));   
        String temp=null;   
        StringBuffer sb=new StringBuffer();   
        temp=br.readLine();   
        while(temp!=null){   
            sb.append(temp+" ");   
            temp=br.readLine();   
        }   
        return sb.toString();   
    }  
    /** *//**读文件  
     * @param path  
     * @return  
     * @throws IOException  
     */  
    public String FileInputStreamDemo(String path) throws IOException{   
        File file=new File(path);   
        if(!file.exists()||file.isDirectory())   
            throw new FileNotFoundException();   
        FileInputStream fis=new FileInputStream(file);   
        byte[] buf = new byte[1024];   
        StringBuffer sb=new StringBuffer();   
        while((fis.read(buf))!=-1){   
            sb.append(new String(buf));       
            buf=new byte[1024];//重新生成,避免和上次读取的数据重复   
        }   
        return sb.toString();   
    }  


    
    
    /** *//**  
     * 文件输出示例  
     */  
    public void PrintStreamDemo(){   
        try {   
            FileOutputStream out=new FileOutputStream("D:/test.txt");   
            PrintStream p=new PrintStream(out);   
            for(int i=0;i<10;i++)   
                p.println("This is "+i+" line");   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        }   
    }
	
}

 

分享到:
评论

相关推荐

    file_util.py

    file_util.py

    cw-util-file-encryptdecrypt.rar

    本篇将详细解读一个名为“cw-util-file-encryptdecrypt.rar”的自开发文件加密解密工具,它采用了当前广泛使用的加密解密方法,适用于各类项目集成,并附带了具体的测试方案,旨在为用户提供高效且安全的数据保护...

    C#工具类BitVector CookieUtil DES FileUtil HttpUtil ImageFile JavaScriptString JsonHelper StringUtil Thumbnail Utils WebFileInfo

    BitVector CookieUtil DES FileUtil HttpUtil ImageFile JavaScriptString JsonHelper StringUtil Thumbnail Utils WebFileInfo

    AndroidUtil:Android 开发 工具类 总结

    3. File Util:处理文件读写、文件夹创建、文件压缩和解压等操作,方便开发者进行本地数据存储。 4. Data Util:提供数据转换和解析功能,例如JSON和XML的解析,日期时间的格式化,以及加密解密等。 5. Log Util:...

    util.zip_util

    1. **压缩文件/目录**:`zip_util`可能有一个或多个函数,如`compress_file`或`compress_directory`,用于将单个文件或整个目录压缩成ZIP文件。这些函数可能会接受文件路径、目标ZIP文件名以及压缩级别等参数。 2. ...

    C# Util 实用工具类

    为了提高开发效率,程序员们常常会创建一些实用工具类库,如"C# Util",它整合了多种常用的功能模块,使得代码复用变得更为便捷。下面将详细阐述这个工具类库中的主要组成部分及其应用场景。 1. **Json**: JSON...

    util-linux-ng-util-linux-ng-2.17.2-12.24.el6_8.1.zip

    最后,fsck(File System Check)是用于检查和修复文件系统错误的实用程序。在Linux中,文件系统的完整性至关重要,因为任何数据损坏都可能导致严重的系统问题。fsck可以定期或者在系统启动时自动运行,对指定的文件...

    TreeFile.txt

    import java.io.File; import java.util.ArrayList; import java.util.List; /** * * 项目名称:FileTest * 类名称:TreeFile * 类描述:将制定目录下得所有子目录和文件按树形输出 * 创建时间:2011-10-19 ...

    apr-util-1.6.1.zip

    rm: cannot remove `libtoolT': No such file or directory 解决: configure中#$RM "$cfgfile" 3、apr-util-1.6.1.tar 报错: fatal error:expat.h:no such file or directory  #include compile interrupt ...

    JAVA课件 swing io util

    例如,可以使用`java.nio.file.Files`类的readAllBytes()方法读取整个文件到字节数组,或者使用`java.util.zip`包压缩和解压缩文件。 总的来说,Java Swing负责构建用户界面,IO负责数据的传输,而Util提供了许多...

    Java常用工具类UtilClass

    例如,`readFileToString()`可以读取文件内容为字符串,`writeStringToFile()`则可以将字符串写入文件。 - 文件路径处理也是`FileUtil`的一部分,如获取绝对路径 (`getAbsolutePath()`)、判断文件是否存在 (`exists...

    MD5Util.zip

    2. **文件MD5校验**:对于大文件,MD5Util可能还包含一个方法,如`calculateFileMD5(File file)`,用于计算文件的MD5值。这个过程涉及到读取文件内容并分块计算,最后将所有块的MD5值合并得到整个文件的MD5摘要。 3...

    Read-File-Util.py

    按照一定规则,读取EXCEL的数据 文档介绍:https://blog.csdn.net/weixin_43664254/category_9975078.html 自动化测试用例要怎么写文章里边写的

    Java常用Util类

    10. **File**: 表示文件和目录路径名的抽象表示形式,提供了文件和目录的基本操作。 11. **Scanner**: 用于从输入源(如键盘、文件)读取用户输入的数据。 12. **Objects**: 提供了一些实用的静态方法,如对象的...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    java常用util工具类

    例如,`readFileToString()`可以将整个文件内容读取为一个字符串,`writeStringToFile()`则可以将字符串写入到文件。此外,`exists()`和`mkdirs()`分别用于检查文件是否存在以及创建多级目录。在处理文件时,`...

    java.util.zip 解压缩文件,ZIP格式压缩文件.rar

    在Java编程语言中,`java.util.zip` 是一个非常重要的包,它提供了处理各种压缩格式(如ZIP和GZ)的工具。在这个场景中,我们将深入探讨如何使用这个包来解压缩和压缩ZIP格式的文件。`java.util.zip` 包包含几个关键...

    File-Tail-0.99.3.tar.gz

    此外,还有C/C++源代码文件,如main.c、util.c等,它们包含了程序的主要逻辑和辅助函数。通过阅读这些源代码,开发者可以了解File-Tail如何实现文件监控,包括文件句柄管理、信号处理、内存管理等方面的知识。 在...

    net.mindview.util.jar

    和`net.mindview.util.TextFile`。这表明这个库可能专注于提供打印和文本文件操作的工具。`Print`类可能包含一系列静态方法,用于格式化和输出信息到控制台或者日志文件。而`TextFile`类则可能封装了读取、写入和...

Global site tag (gtag.js) - Google Analytics