`
assertmyself
  • 浏览: 29571 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

IO操作工具类--基于common-io

阅读更多
封装IO的一些常用操作:基于Common-io  :IOUtils方法


CommonUtils.java
package com.gbcom.frame.io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

/**
 * 封装IO的一些常用操作:基于Common-io  :IOUtils方法
 *   1.read.write.copy.delete.convert
 * 
 * 
 * 无异常  无空指针
 * @author SYZ
 * @date 2014-12-4,上午10:20:22
 * @version v1.0.0
 * @see com.gbcom.frame.io.CommonUtils
 */
public class CommonUtils {
	private static List<String> readLines(File file) throws IOException{
		return readLines(file,"UTF-8");
	}
	private static List<String> readLines(File file,String encoding) throws IOException{
		return FileUtils.readLines(file, encoding);
	}
	private static List<String> readLines(InputStream input) throws IOException{
		return readLines(input,"UTF-8");
	}
	private static List<String> readLines(InputStream input,String encoding) throws IOException{
		return IOUtils.readLines(input, encoding);
	}
	private static List<String> readLines(Reader read) throws IOException{
		return IOUtils.readLines(read);
	}
	
	/**
	 * 读取文件,保存到byte数组中:不需要指定具体编码格式
	 * @param srcFile
	 * @return
	 */
	public static byte[] read(String srcFile){

		File file = new File(srcFile);
		InputStream input = null;
		try{
			input = new FileInputStream(file);
			return IOUtils.toByteArray(input);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			IOUtils.closeQuietly(input);
		}
		return new byte[0];
	
	}
	/**
	 * 读取文件:保存到String对象中,默认使用utf-8作为编码格式
	 * @param srcFile
	 * @return
	 */
	public static String readAll(String srcFile){
		File file = new File(srcFile);
		InputStream input = null;
		try{
			input = new FileInputStream(file);
			return IOUtils.toString(input, "utf-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			IOUtils.closeQuietly(input);
		}
		return "";
	}
	/**
	 * 读取文件,按行分割保存到list中,默认编码格式为utf-8
	 * @param srcFile
	 * @return
	 */
	public static List<String> readLines(String srcFile){
		File file = new File(srcFile);
		InputStream input = null;
		try {
			input = new FileInputStream(file);
			return readLines(input,"utf-8");
			//IOUtils.readLines(input, encoding);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			IOUtils.closeQuietly(input);
		}
		return new ArrayList<String>(0);
	}
	/**
	 * 写文件。最原始的方式,支持 byte数组,无序提供编码格式
	 * @param srcFile
	 * @param data
	 */
	public static void wirte(String srcFile,byte[] data){
		File file  = new File(srcFile);
		OutputStream out = null;
		try {
			out = new FileOutputStream(file);
			IOUtils.write(data, out);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(out !=null){
				IOUtils.closeQuietly(out);
			}
		}
	}
	/**
	 * 一次性写入文件,如果需要分行,需要再buffer中使用\n 实现
	 * @param srcFile
	 * @param buffer
	 */
	public static void writeAll(String srcFile,StringBuffer buffer){
		File file  = new File(srcFile);
		OutputStream out = null;
		try {
			out = new FileOutputStream(file);
			IOUtils.write(buffer, out,"utf-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(out !=null){
				IOUtils.closeQuietly(out);
			}
		}
	
	}
	/**
	 * 写文件:支持多行写入,list提供
	 * @param srcFile
	 * @param lines
	 */
	public static void writeLines(String srcFile,List<String> lines){
		File file  = new File(srcFile);
		OutputStream out = null;
		try {
			out = new FileOutputStream(file);
			IOUtils.writeLines(lines, null, out, "UTF-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(out !=null){
				IOUtils.closeQuietly(out);
			}
		}
	}
	

	/**
	 * 在文件末尾添加:仅支持
	 * @param scrFile
	 * @param Lines
	 */
	public static void appendWrite(String srcFile,List<String>lines){
		File file  = new File(srcFile);
		OutputStream out = null;
		try {
			out = new FileOutputStream(file,true);//append
			IOUtils.writeLines(lines, null, out, "UTF-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(out !=null){
				IOUtils.closeQuietly(out);
			}
		}
	
		
	}
	/**
	 * 在文件末尾添加:仅支持 List 和 StringBuffer 其他省略
	 * @param scrFile
	 * @param Lines
	 */
	public static void appendWrite(String srcFile,StringBuffer buffer ){
		File file  = new File(srcFile);
		OutputStream out = null;
		try {
			out = new FileOutputStream(file,true);//append
			IOUtils.write(buffer, out, "UTF-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(out !=null){
				IOUtils.closeQuietly(out);
			}
		}
	}
	
	
	/**
	 * 拷贝文件,,return count  failed  return -1
	 * @param src
	 * @param dest
	 */
	public static int  copy(String src,String dest){
		File srcFile = new File(src);
		File destFile = new File(dest);
		
		InputStream input = null;
		OutputStream output = null;
		try {
			input = FileUtils.openInputStream(srcFile);
			output = new FileOutputStream(destFile);
			return IOUtils.copy(input, output);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(output !=null){
				IOUtils.closeQuietly(output);
			}
			if(input !=null){
				IOUtils.closeQuietly(input);
			}
		}
		return -1;
	}
	
	/**
	 * 支持文件夹操作
	 * @param dest
	 */
	public static void delete(String ... dests){
		for(String dest : dests){
			File file = new File(dest);
			try {
				FileUtils.forceDeleteOnExit(file);
			} catch (IOException e) {
				e.printStackTrace();
				continue;
			}finally{
				file = null;
			}
		}
	}
	
	
	public static void main(String args []) throws IOException{
		String dir = "d:\\";
		String srcName = "xxx.jpg";
		String destName = "test.xds";
		
		
//		FileUtils.forceMkdir(new File(dir));
//		
//		copy(dir+File.separator+srcName,dir+File.separator+destName);
		
		delete(dir+File.separator+srcName,dir+File.separator+destName);
	}
}
分享到:
评论

相关推荐

    commons-io-2.2

    2. **流处理**:该库提供了许多处理输入/输出流的工具类,如`StreamUtils`,可以方便地进行流的复制、关闭和空值检查。此外,`IOUtils`类包含了对字节流和字符流的转换,以及读取和写入整流的功能。 3. **字符集...

    commons-io所有版本(0.1-2.4).zip

    Apache Commons IO 是一个Java库,它提供了一系列实用工具类来处理输入/输出操作。这个压缩包包含从0.1版本到2.4版本的所有Apache Commons IO的发布。这些版本跨越了多个年份,反映了该库在发展过程中的功能增强、...

    common-io,common-fileupload.jar等jar包

    - **文件和流操作**: 提供了大量与文件和流操作相关的工具类,如`FileUtils`、`IOUtils`等,使得文件操作更加简单易用。 - **读写操作**: `FileUtils`类提供了静态方法用于文件的读取、写入、复制、移动和删除,...

    commons-io-2.4 包含了所有commons-io的jar包和源码

    Apache Commons IO 是一个Java库,专注于提供各种I/O操作的实用工具类,这些操作包括文件、流、过滤器、读写、转换、检测等。在本案例中,我们讨论的是"commons-io-2.4"版本,这个版本包含了完整的Apache Commons IO...

    commons-fileupload-1.2.2 common-io-2.0.1

    在提供的文件名中,我们看到的是两个关键组件:`commons-fileupload-1.2.2` 和 `common-io-2.0.1`,它们是Apache Commons项目中的两个重要部分。 **Apache Commons FileUpload** 是一个用于处理HTTP请求中包含文件...

    common-io.jarcommon-io.jar

    Apache Commons IO是Java开发中常用的一个开源库,其核心组件是`common-io.jar`,这个库提供了大量的实用工具类,用于处理日常的输入/输出(I/O)操作。在Java标准库中,I/O操作虽然已经提供了一定的支持,但Apache ...

    Common-io工具类

    这个库被称为"Common-io工具类",它包含了大量的静态方法,可以用于各种常见的I/O操作,而无需创建额外的对象,从而提高了代码的效率和可读性。 一、文件操作 在Commons IO中,`FileUtils`类是处理文件操作的核心...

    commons-fileupload-1.3.3.jar和commons-io-2.6.jar

    Apache Commons IO库 (`commons-io-2.6.jar`) 是一套针对输入/输出操作的通用工具类集合。它提供了大量的实用方法,涵盖了文件操作、流操作、转换、读写操作、字符集检测等诸多方面。在处理文件上传时,`commons-io`...

    commons-io-2.8-source.zip

    Commons-IO 包括 工具类 (utility classes), 字节序列类 (endian classes), 行迭代器 (line iterator), 文件过滤器 (file filters),文件比较器 (file comparators) 和 流实现 (stream implementations).

    commons-io-2.11.0.rar

    这个库提供了大量的实用工具类,简化了常见的文件、流、过滤器、读写操作等任务。"commons-io-2.11.0.rar"是Apache Commons IO库的版本2.11.0的压缩包文件,包含了该版本的所有源代码、类库和相关的文档。 Apache ...

    commons-io-2.6.jar下载

    以上只是 `commons-io-2.6.jar` 中部分关键功能的概述,实际使用中,根据具体需求,可以灵活组合这些工具类和方法,以满足各种 I/O 相关的需求。Apache Commons IO 以其强大的功能和良好的兼容性,广泛应用于各种 ...

    commons-io-2.4.jar包 官方免费版

    这个库提供了一系列与输入输出操作相关的实用工具类,极大地简化了Java程序员处理IO任务的复杂性。标题提到的"commons-io-2.4.jar"是这个库的一个版本,版本号为2.4,表明它是官方发布的稳定版本,对先前版本进行了...

    Apache common io转码工具类入门教程

    Apache Commons IO是Apache软件基金会开发的一个Java库,它提供了大量的实用工具类,简化了I/O操作,包括文件、流、过滤器、读写操作、转码等。在本教程中,我们将深入探讨如何使用Apache Commons IO进行转码,特别...

    上传架包commmon-fileupload common-io

    Apache Commons IO是另一个非常实用的Java库,它提供了大量的I/O操作工具类,涵盖了文件操作、流操作、字符集转换等许多方面。"commons-io-2.4-bin"这个压缩包中包含的则是Commons IO库的二进制版本,以及可能的文档...

    common-io监听文件夹并发送rabbitmq

    标签“common-io”指的是Apache Commons IO,这是一个Java类库,包含了大量与I/O相关的实用工具类,支持文件、流、过滤器、读写操作、转换、检测等功能。在这个项目中,我们可能会用到`FileAlterationObserver`和`...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    Apache Commons IO是一个Java库,提供了大量的实用工具类,用于处理基本的IO操作,如读写文件、复制流、处理路径等。而Apache Commons FileUpload则专门用于处理HTTP请求中的多部分数据,即文件上传。 二、Servlet...

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    `commons-io-1.4.jar`是Apache Commons IO库的一个版本,它包含了大量与I/O操作相关的工具类。这个库是对Java标准库的扩展,提供了一些额外的功能和便利性。在与FileUpload配合使用时,IO库可以用来: 1. **文件...

    commons-io-2.4.jar包

    其中,`commons-io-2.4.jar`是该库的一个特定版本,适用于Eclipse和MyEclipse等集成开发环境,为Java开发者提供了丰富的IO工具类,大大简化了日常的IO操作。在这个版本中,Apache Commons IO提供了大量实用的功能,...

    commons-fileupload-1.2.2.jar和commons-io-2.4.jar包

    `commons-io-2.4.jar`则是Apache Commons IO的实现,这是一个用于处理I/O操作的通用库,包括文件操作、流操作、转换、读写、比较、拷贝等。在处理文件上传和下载的过程中,IO库提供了许多实用工具类和方法,如文件的...

    commons-io-2.0-src

    通过查看"commons-io-2.0-src"的源代码,我们可以深入学习这些类和方法的实现细节,理解它们如何优化IO操作,以及如何在自己的项目中有效地利用这些工具。同时,源码中的测试类(如`Test*`)提供了丰富的示例,展示...

Global site tag (gtag.js) - Google Analytics