文档章节

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

林伟琨
 林伟琨
发布于 06/23 11:37
字数 573
阅读 12
收藏 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");
}

} `

© 著作权归作者所有

共有 人打赏支持
林伟琨
粉丝 8
博文 103
码字总数 34739
作品 0
厦门
后端工程师
资料推荐--Google Java编码规范

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

泳泳啊泳泳
01/07
0
0
Google Java编程风格指南

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

高得顺
2014/02/10
0
2
Google Java编程风格指南(中文)

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

xialeizhou
2016/09/06
31
0
JAVA编码风格

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

i刘晓伟
2015/06/29
528
1
pycharm的安装配置和简单使用

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

粗粮面包
2017/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里开源的 java 诊断工具—— Arthas

Arthas 是 阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 java 的问题进行诊断! 一、概述 这个工具可以协助你做下面这些事情: 这个类是从哪个 jar 包加载而来的? 为什么会报各...

xiaomin0322
27分钟前
2
0
去除shell read 读取的最后一个字符

# 读取管道数据cat | while read line; do echo $line # 此时 line包含 \n or \r\ndone# 去除 read 读取的特殊字符line=${line%?} # 去除最后一个字符...

tigerBin
28分钟前
1
0
Qt之listView设置编辑状态

QListView默认是可以编辑的,可以用setEditTrigers设置QListView的条目是否可以编辑,以及如何进入编辑状态。比如: ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAb...

OceanStar
28分钟前
1
0
Linux批量替换

sed -i "s/http://cache.co188.com///image.co188.com/g" grep http:\/\/image.co188.com -rl . *.html sed -i "s/http://cache.co188.com///cache.co188.com/g" grep http:\/\/cache.co188.......

cpaku
38分钟前
1
0
设置plsql永久注册码

填写注册码: Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number:601769 password:xs374ca...

小橙子的曼曼
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部