文档章节

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

林伟琨
 林伟琨
发布于 06/23 11:37
字数 573
阅读 11
收藏 0
点赞 0
评论 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
博文 99
码字总数 34261
作品 0
厦门
后端工程师
Google Java编程风格指南(中文)

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

xialeizhou
2016/09/06
31
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
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
Google Java编程风格指南

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

陶邦仁
2015/02/10
0
0
.NET平台开源项目速览(5)深入使用与扩展SharpConfig组件

阅读目录 1.SharpConfig源码分析 2.SharpConfig使用问题与扩展 3.资源   上个月在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和 .NET平台开源项目速览(1)SharpConfig配置...

老朱第八
2017/11/11
0
0
Google Java编程风格指南

Google Java编程风格指南 January 20, 2014 作者:Hawstein 出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|...

倪伟伟
2014/02/21
0
0
bhsc881114/RocketMQ

RocketMQ是什么? RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点: 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式特性 同时支持Push与Pull方...

bhsc881114
2014/08/31
0
0
【JAVA】java coding规范

个人整合了一些开发中常见的规范,仅供参考。 源码文件编码应为UTF-8。 任何需要转义字符串表示的字符(例如b, t, n, f, r, ’, 等),采用这种转义字符串的方式表示。 整个源码文件中最上面...

lsttoy
2016/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
12分钟前
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
15分钟前
0
0
003. es6数值的扩展

一、普通扩展 Number 方法,将字符串、数值转为十进制 : Number('0b111') Number.isFinite() 用来检查一个数值是否为有限的:Number.isFinite(15) Number.isNan() 用来检查一个值是否为NaN N...

秋季长青
29分钟前
0
0
rabbitmq学习(二)

基本队列:Producer直接发送信息到Queue中,Consumer接收Queue发送过来的信息 简而言之,一个生产者发送信息,一个消费者接收信息。 获取连接工具类: package com.example.demo.utils;i...

人觉非常君
33分钟前
0
0
C语言数组和指针的语法糖

对于C语言,我可以这样秀:比如当创建一个数组arr[n]之后,一般我们去遍历数组的时候是for (int i = 0; i < n; i++) { a[i]; }但是我知道下表访问符[]是个语法糖,也就是说a[i]在编译器看来是...

ustbgaofan
37分钟前
0
0
Call to undefined function bcmath()的解决方法

乐意黎的ECS主机环境,Centos7.2 + PHP7 由于使用了bcdiv()函数,运行时总在抛错。 Fatal error: Call to undefined function bcmath() in /usr/loca/apache/htdocs/... on line 4 一查得知:......

dragon_tech
43分钟前
0
0
css优先级

..

architect刘源源
47分钟前
0
0
【转】Twitter的分布式自增ID算法snowflake

结构 snowflake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以...

talen
51分钟前
0
0
hive支持行级修改

Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置。要想支持行级insert、update、delete,需要配置Hive支持事务。 一、Hive具有ACID语义事务的使用场景 1. 流式...

hblt-j
57分钟前
0
0
Python---scrapy框架的学习

scrapy框架的学习 先熟悉下scrapy项目结构: scrapyTest/scrapyTest/ _init_.py用来初始化项目信息 scrapyTest/scrapyTest/ items.py文件为爬虫项目的数据容器文件,主要用来定义我们的数据....

android-key
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部