Files
MaxKey/maxkey-common/src/test/java/org/maxkey/Copyright.java
2022-01-13 10:46:38 +08:00

166 lines
5.2 KiB
Java

/*
* Copyright [2020] [MaxKey of copyright http://www.maxkey.top ]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.maxkey;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 给java文件批量添加License信息.
* @author MaxKey Copyright Adder
*
*/
public class Copyright {
// 存放java文件的文件夹,必须是文件夹
private static String srcFolder = "D:\\MaxKey\\workspace\\workspace-maxkey\\MaxKey";
//已添加标识
private static String copyRightText = "http://www.apache.org/licenses/LICENSE-2.0";
//扫描目录
private String folder;
//版权信息
private String copyRight;
//待添加所以文件统计
private long fileCount = 0;
//添加的问题就统计
private long copyRightFileCount = 0;
private static String lineSeperator = System.getProperty("line.separator");
private static String encode = "UTF-8";
/**
* Copyright.
* @param folder java文件夹.
* @param copyRight 版权内容.
*/
public Copyright(String folder, String copyRight) {
this.folder = folder;
this.copyRight = copyRight;
}
/**
* main .
* @param args String
* @throws IOException IOException
*/
public static void main(String[] args) throws IOException {
// 从文件读取版权内容
// 在D盘创建一个copyright.txt文件,把版权内容放进去即可
String copyright = readCopyrightFromFile(
Copyright.class.getResource("copyright.txt").getFile());
new Copyright(srcFolder, copyright).process();
}
/**
* process.
* @throws IOException not
*/
public void process() throws IOException {
this.addCopyright(new File(folder));
System.out.println("fileCount " + fileCount);
System.out.println("copyRightFileCount " + copyRightFileCount);
}
private void addCopyright(File folder) throws IOException {
File[] files = folder.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File f : files) {
if (f.isFile()) {
doAddCopyright(f);
} else {
addCopyright(f);
}
}
}
private void doAddCopyright(File file) throws IOException {
String fileName = file.getName();
boolean isJavaFile = fileName.toLowerCase().endsWith(".java");
this.fileCount++;
if (isJavaFile && !isAddCopyrightFile(file.getAbsolutePath())) {
copyRightFileCount++;
System.out.println(file.getAbsolutePath());
try {
this.doWrite(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void doWrite(File file) throws IOException {
StringBuilder javaFileContent = new StringBuilder();
String line = null;
// 先添加copyright到文件头
javaFileContent.append(copyRight).append(lineSeperator);
// 追加剩余内容
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(file), encode));
while ((line = br.readLine()) != null) {
javaFileContent.append(line).append(lineSeperator);
}
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file), encode);
writer.write(javaFileContent.toString());
writer.close();
br.close();
}
private static String readCopyrightFromFile(String copyFilePath) throws IOException {
StringBuilder copyright = new StringBuilder();
String line = null;
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(copyFilePath), encode));
while ((line = br.readLine()) != null) {
copyright.append(line).append(lineSeperator);
}
br.close();
return copyright.toString();
}
private static boolean isAddCopyrightFile(String filePath) throws IOException {
boolean isAddCopyright = false;
String line = null;
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(filePath), encode));
while ((line = br.readLine()) != null) {
if (line.indexOf(copyRightText) > -1) {
isAddCopyright = true;
break;
}
}
br.close();
return isAddCopyright;
}
}