文档章节

代码注释中顺序更改 文件读写换行

林伟琨
 林伟琨
发布于 06/23 11:37
字数 573
阅读 13
收藏 0

`package ssh;

import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils;

import java.io.*;

public class DirErgodic {

private static final LoggerUtil logger = LogFactory.getLogger(DirErgodic.class);

private static int depth = 1;

public static void find(String pathName, int depth) throws IOException {
	int filecount = 0;
	//获取pathName的File对象
	File dirFile = new File(pathName);
	//判断该文件或目录是否存在,不存在时在控制台输出提醒
	if (!dirFile.exists()) {
		System.out.println("do not exit");
		return;
	}
	//判断如果不是一个目录,就判断是不是一个文件,时文件则输出文件路径
	if (!dirFile.isDirectory()) {
		if (dirFile.isFile()) {
			//System.out.println(dirFile.getCanonicalFile());
		}
		return;
	}

	for (int j = 0; j < depth; j++) {
		//System.out.print("  ");
	}
	//System.out.print("|--");
	//System.out.println(dirFile.getName());
	//获取此目录下的所有文件名与目录名
	String[] fileList = dirFile.list();
	int currentDepth = depth + 1;
	for (int i = 0; i < fileList.length; i++) {
		//遍历文件目录
		String string = fileList[i];
		//File("documentName","fileName")是File的另一个构造器
		File file = new File(dirFile.getPath(), string);
		String name = file.getName();
		//如果是一个目录,搜索深度depth++,输出目录名后,进行递归
		if (file.isDirectory()) {
			//递归
			find(file.getCanonicalPath(), currentDepth);
		} else {
			//如果是文件,则直接输出文件名
			for (int j = 0; j < currentDepth; j++) {
				//System.out.print("   ");
			}
			//只需要java文件
			if (StringUtils.endsWith(name, ".java")) {
				//System.out.print("|--");
				//System.out.println(name);
				replacTextContent(file.getPath());
			}

		}
	}
}


/**
 * 替换文本文件中的 非法字符串
 *
 * [@param](https://my.oschina.net/u/2303379) path
 * [@throws](https://my.oschina.net/throws) IOException
 */
public static void replacTextContent(String path) throws IOException {
	logger.info("正在读取 path:" + path);
	// 读
	File file = new File(path);
	FileReader in = new FileReader(file);
	BufferedReader bufIn = new BufferedReader(in);
	// 内存流, 作为临时流
	CharArrayWriter tempStream = new CharArrayWriter();
	// 替换
	String line = null;
	String fir = null, sec = null;
	boolean needChange = false;
	boolean noFirWrite = false;
	boolean alreadyChanged = false;
	while ((line = bufIn.readLine()) != null) {
		//方法及之后
		if (StringUtils.isNotBlank(fir) && StringUtils.isNotBlank(sec)) {
			if (!needChange) {
				//获取方法
				needChange = true;
				//装装代码
				String func = line;
				if (StringUtils.contains(func, "/")) {
					alreadyChanged = true;
				}
				addLine(tempStream, func, noFirWrite);
				addLine(tempStream, fir, noFirWrite);
				addLine(tempStream, sec, noFirWrite);
			} else {
				//后面的代码
				addLine(tempStream, line, noFirWrite);
			}
		}
		//日期
		if (StringUtils.isNotBlank(fir)) {
			if (StringUtils.contains(line, "@date")) {
				//获取日期
				sec = line;
			}
		}
		//作者
		if (StringUtils.contains(line, "@author")) {
			//获取作者
			fir = line;
		}
		if (StringUtils.isBlank(fir)) {
			//第一次前面的代码
			addLine(tempStream, line, noFirWrite);
		}
		noFirWrite = true;
	}

	if (needChange && !alreadyChanged) {
		//先方法在作者在日期
		//组装三个部分代码
		FileWriter out = new FileWriter(file);
		tempStream.writeTo(out);
		out.close();
		logger.debug("正在修改 path:" + path);
	}
	// 关闭 输入流
	bufIn.close();
}

private static void addLine(CharArrayWriter tempStream, String line, boolean noFirWrite) throws IOException {
	if (noFirWrite) {
		// 添加换行符
		tempStream.append(System.getProperty("line.separator"));
	}
	// 将该行写入内存
	tempStream.write(line);
}

public static void main(String[] args) throws IOException {
	find("E:\\xxx", depth);
	//replacTextContent("E:\\xxx\\xxx-service\\src\\main\\java\\com\\xxx\\xxx\\rpc\\dao\\data\\xxx.java");
}

} `

© 著作权归作者所有

共有 人打赏支持
林伟琨
粉丝 9
博文 107
码字总数 38972
作品 0
厦门
后端工程师
私信 提问
资料推荐--Google Java编码规范

之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的英文很简单,但是最近发现有人翻译了这篇文章,所以专门写...

泳泳啊泳泳
01/07
0
0
JAVA编码风格

编码规则: http://hawstein.com/posts/google-java-style.html 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编...

i刘晓伟
2015/06/29
528
1
Google Java编程风格指南(中文)

前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是...

xialeizhou
2016/09/06
31
0
Google Java编程风格指南

作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明...

高得顺
2014/02/10
0
2
pycharm的安装配置和简单使用

1.pycharm的安装和配置 1)下载地址 https://www.jetbrains.com/pycharm/download/#section=windows 各位可以选择Community版本进行安装学习,土豪可以选择Professional版本下载安装包后默认...

粗粮面包
2017/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
48分钟前
1
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
52分钟前
2
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
1
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部