`
gary0416
  • 浏览: 330768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

按目录递归清理文件每行开头结尾的空白

阅读更多

package com.gary.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 清理指定目录下,符合扩展名条件的文件,删除每行开头结尾的空白(空格,制表符,换页符等)和空行
 * @author gary
 *
 */
public class CleanHTML {
	//清理指定扩展名
	static String[] targetExtName = {"html", "jsp", "ftl", "vm"};
	
	public static void main(String[] args) throws IOException {
		cleanDir(new File("E:\\test"));
	}
	
	/**
	 * 清理目录
	 * @param dir
	 */
	public static void cleanDir(File dir){
		File[] subFile = dir.listFiles();
		for (int i = 0; i < subFile.length; i++) {
			//如果是dir,递归清理目录
			if(subFile[i].isDirectory()){
				cleanDir(subFile[i]);
			}else{
				System.out.println("文件:" + subFile[i].getAbsolutePath());
				String fileName = subFile[i].getName();
				//是否需要清理
				boolean needClean = false;
				//扩展名
				String extName = getFileExtName(fileName); 
				for (int j = 0; j < targetExtName.length; j++) {
					if(targetExtName[j].equalsIgnoreCase(extName)){
						needClean = true;
					}
				}
				if(needClean){
					System.out.println("操作:清理");
					cleanFile(subFile[i]);
				}else{
					System.out.println("操作:忽略");
				}
			}
		}
	}
	
	/**
	 * 清理文件
	 * @param fileFullPath
	 * @throws IOException 
	 */
	public static void cleanFile(File file){
		FileWriter fw = null;
		try {
			fw = new FileWriter(file.getAbsoluteFile()+".tmp", false);
		} catch (IOException e2) {
			e2.printStackTrace();
		}
		BufferedWriter bw = new BufferedWriter(fw);
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            //每次读取一行
            while ((tempString = reader.readLine()) != null) {
            	if(!isBlank(tempString)){
            		bw.write(cleanHTML(tempString));
            		bw.newLine();
            	}
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        	//将数据更新至文件
        	try {
				bw.flush();
				bw.close();
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
            
            File tmpFile = new File(file.getAbsoluteFile()+".tmp");
            file.delete();
            tmpFile.renameTo(file);
        }
	}
	
	/**
	 * 删除开头结尾的空白(空格,制表符,换页符等)
	 * @param str
	 * @return
	 */
	public static String cleanHTML(String str){
		Pattern pattern = Pattern.compile("^\\s*|\\s*$",Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(str);
        return matcher.replaceAll("");
	}
	
	/**
	 * 获取文件扩展名
	 * @param fileName
	 * @return
	 */
	public static String getFileExtName(String fileName){
		return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
	}
	
	/**
	 * 字符串是否为空
	 * @param str
	 * @return
	 */
	public static boolean isBlank(String str){
		int strLen;
		if ((str == null) || ((strLen = str.length()) == 0)){
			return true;
		}
		for (int i = 0; i < strLen; ++i) {
			if (!(Character.isWhitespace(str.charAt(i)))) {
				return false;
			}
		}
		return true;
	}
	
}
 
分享到:
评论

相关推荐

    递归删除文件或子目录

    递归地删除指定目录下的文件或子目录,跳过属性为只读的文件或目录。开发语言:VC6.0。

    C# FTP递归下载文件(子目录和子目录中的文件)

    C# FTP递归下载文件(子目录和子目录中的文件 服务器使用的Serv-u软件 Visual Studio 2008专业版编译 Winfrom 实例,修改FTP连接信息即可编译使用

    使用递归生成文件目录树

    使用递归生成文件目录树 .txt 使用递归生成文件目录树 .txt

    一个递归删除指定目录和文件的例子

    一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子

    Android 手机sdcard目录或文件的拷贝 移动 删除 递归

    一个关于文件操作的静态工具类 实现手机SD卡目录或文件的拷贝 移动 删除 递归 Demo中有详细注释 在进行Demo测试时 建议先把测试的文件备份一下在测试 否则删除就找不回了 具体可见我博客...实现手机SD卡目录或文件的...

    matlab开发-递归搜索文件

    matlab开发-递归搜索文件。递归查找具有命名模式的所有文件和文件夹实例

    递归删除文件目录的方法

    这是一个使用java开发了类,可以递归删除文件目录。

    java 递归读取文件夹 读取文件 写文件

    java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取文件 写文件java 递归读取文件夹 读取...

    JAVA递归删除目录失败

    so easy,写了一个递归删除目录,但结果出乎意料,一个递归目录删除成功,而另外一个却删除失败,刚开始怀疑文件被占用问题,后来被排除了。后来尝试使用各种工具,文件粉碎机都不能解决。最后,通过重命名解决此...

    Qt目录下的文件递归拷贝源码

    此源码实现了文件夹下递归遍历文件,实现文件拷贝。代码已经变异通过,可直接运行,给用户的工具源码,可以直接编译并在产品中使用,经过长时间测试

    linux下为目录和文件设置权限,包括子目录的循环递归设置

    linux下为目录和文件设置权限,包括子目录的循环递归设置 chmod 命令可以改变所有子目录的权限

    递归统计文件大小

    递归统计文件大小 C# winform code: DirectoryInfo directoryInfo = new DirectoryInfo(path); long length = 0; foreach (FileSystemInfo fsi in directoryInfo.GetFileSystemInfos()) { if (fsi is FileInfo) ...

    Shell脚本实现从文件夹中递归复制文件

    主要介绍了Shell脚本实现从文件夹中递归复制文件,本文脚本实现从十层左右的文件夹中复制所有文件到一目录中,需要的朋友可以参考下

    易语言递归枚举所有文件

    易语言递归枚举所有文件源码,递归枚举所有文件,线程,枚举文件

    python实现MP4文件递归查找功能

    这个py文件实现递归查找指定路径下所有.mp4文件,并根据文件名相关信息存储为map.是本人基础学习py时候根据学校项目需要写的一个文件,后续可以结合glog和gflags升级成能查找各种类型的文件.

    一种简单方法的实现文件递归搜索

    1)指定任意目录,实现文件递归搜索,并且可将搜索到的文件拷贝到指定位置,且保持原目录结构; 2)对于搜索到的文件,加上指定后缀(以.bak为例),然后拷贝到指定目录; 3)实现将指定目录下的指定后缀(以.bak为...

    一个简单的目录递归函数

    我的程序在国外的SREVER上,自己编的程序存放到哪,我很难记清。 所以编了一个简单的目录递归函数,查看我的程序,很方便的php文件

    文件,遍历文件,文件递归,文件查找

    文件,遍历文件,文件递归,文件查找文件,遍历文件,文件递归,文件查找

    matlab开发-搜索文件递归目录2

    matlab开发-搜索文件递归目录2。用多个条件搜索给定文件夹中的文件

    易语言无递归遍历文件

    易语言无递归遍历文件源码,无递归遍历文件,目录_遍历文件,目录_遍历文件取消

Global site tag (gtag.js) - Google Analytics