文档章节

文件操作工具类

沉默的懒猫
 沉默的懒猫
发布于 2016/12/02 14:15
字数 632
阅读 20
收藏 2
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
 * 文件操作类
 * */
public class FileUtils {
	/**
	 * 根据路径创建文件
	 * */
	public static void createFile(String path){
		File file = new File(path);
		if( !file.exists() ){
			try {
				file.createNewFile();
				System.out.println("创建文件");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 根据路径创建文件
	 * */
	public void createFile(String path,String content){
		File file = new File(path);
		if( !file.exists() ){
			try {
				file.createNewFile();
				System.out.println("创建文件");
				if( !"".equals(content) && content!=null){
					appendMethod(path,content);
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 根据路径创建文件夹
	 * */
	public static void createFolder(String path){
		File file = new File(path);
		if( !file.exists() && !file.isDirectory() ){
			System.out.println("文件夹不存在,创建。");
			file.mkdirs();
		}else{
			System.out.println("文件夹存在");
		}
	}
	/**
	 * 追加文件信息
	 * */
	public void appendMethod(String fileName, String content) {
		try {
			// 打开一个随机访问文件流,按读写方式
			RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
			// 文件长度,字节数
			long fileLength = randomFile.length();
			// 将写文件指针移到文件尾。
			randomFile.seek(fileLength);
			randomFile.writeUTF(content);
			randomFile.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public void getFileName(String path){
		File file = new File(path);
		if( file.exists() && file.isDirectory() ){
			File[] files = file.listFiles();
			for(File f : files){
				System.out.println("文档名称:"+f.getName()+"是否隐藏:"+f.isHidden()+"类型:"+f.isDirectory());
			}
		}
	}
	/**
	 * 复制文件内容
	 * @param s源文件
	 * @param t目的文件
	 * */
	public static void fileChannelCopy(File s, File t) {

		FileInputStream fi = null;
		FileOutputStream fo = null;
		FileChannel in = null;
		FileChannel out = null;
		try {
			fi = new FileInputStream(s);
			fo = new FileOutputStream(t);
			in = fi.getChannel();// 得到对应的文件通道
			out = fo.getChannel();// 得到对应的文件通道
			in.transferTo(0, in.size(), out);// 连接两个通道,并且从in通道读取,然后写入out通道
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fi.close();
				in.close();
				fo.close();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 压缩文件夹
	 * @param zipFileName 压缩文件路径
	 * @param inputFile 待压缩file
	 * @param encode 编码格式
	 * */
	public static void zip(String zipFileName, File inputFile,String encode) throws Exception {
		System.out.println("压缩中...");
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
				zipFileName));
		encode = encode==null || "".equals(encode) ? "gbk":encode;
		out.setEncoding(encode);
		BufferedOutputStream bo = new BufferedOutputStream(out);
		zip(out, inputFile, inputFile.getName(), bo);
		bo.close();
		out.close(); // 输出流关闭
		System.out.println("压缩完成");
	}

	private static void zip(ZipOutputStream out, File f, String base,
			BufferedOutputStream bo) throws Exception { // 方法重载
		if (f.isDirectory()) {
			File[] fl = f.listFiles();
			if (fl.length == 0) {
				out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base
				System.out.println(base + "/");
			}
			for (int i = 0; i < fl.length; i++) {
				zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
				
			}
		} else {
			out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
			System.out.println(base);
			FileInputStream in = new FileInputStream(f);
			BufferedInputStream bi = new BufferedInputStream(in);
			int b;
			while ((b = bi.read()) != -1) {
				bo.write(b); // 将字节流写入当前zip目录
			}
			bo.flush();
			bi.close();
			in.close(); // 输入流关闭
		}
	}
	/**
	 * 删除目录
	 * */
	public static boolean deleteDir(File dir) {
		 
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
 
        // The directory is now empty so now it can be smoked
        return dir.delete();
    }
	
	
	public static void main(String[] args) {
		FileUtils fm = new FileUtils();
		//fm.createFile("E:\\logs\\log.txt");
//		fm.appendMethod("E:\\logs\\log.txt", "sadf啥都机");
//		fm.createFile("E:\\logs\\log.txt", "sadf啥都浪费");
		fm.getFileName("E:\\");
	}
}

 

© 著作权归作者所有

上一篇: js自定义map
下一篇: 获取当前时间
沉默的懒猫
粉丝 9
博文 103
码字总数 81208
作品 0
海淀
程序员
私信 提问

暂无文章

社区投稿 | 线程简介和 MySQL 调试环境搭建

作者:高鹏 文章末尾有他著作的《深入理解MySQL主从原理 32讲》,深入透彻理解MySQL主从,GTID相关技术知识。 本文节选自《深入理解MySQL主从原理》第29节 注意:本文分为正文和附件两部分,...

爱可生
22分钟前
5
0
DDOS攻击可以分为什么类型?怎么样才能解决?

DDoS 是一种多源网络攻击,其目的是针对终端用户扰乱其网络的资源或服务。其不断进化的复杂性能够造成各种各样的伤害,例如欺诈以及勒索等。DDoS 攻击通常透过多重受损的系统或者装置注入殭尸...

云漫网络Ruan
25分钟前
5
0
从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念

作者| 阿里巴巴资深技术专家、CNCF 9个 TCO 之一 李响 一、什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译...

阿里巴巴云原生
25分钟前
4
0
修改和编译spring源码,构建jar(spring-context-4.0.2.RELEASE)

上周在定位问题时,发现Spring容器实例化Bean的时候抛出异常,为了查看更详细的信息,决定修改spring-context-4.0.2.RELEASE.jar中的CommonAnnotationBeanPostProcessor类的代码,在里面打印...

程序员欣宸
28分钟前
3
0
MongoDB集群配置

MongoDB集群配置 2019年06月30日 13:21:05 2014Team 阅读数 77更多 分类专栏: MongoDB 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文...

linjin200
29分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部