import java.io.File;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;
import 谷歌实例.GoogleLanguage;
import 谷歌实例.GoogleTranslater;
import 谷歌实例.Translater;
public class 翻译注释
{
static String 目标文件夹 = "E:/item/git/bateman/src/main/java/org/wkh/bateman/pso1";
public static void main(String[] args)
{
翻译注释.读取文件夹();
}
public static void 读取文件夹()
{
try
{
Files.walkFileTree(Paths.get(目标文件夹), new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFile(Path 本文件, BasicFileAttributes attrs) throws IOException
{
if (本文件.toString().endsWith(".java"))
{
new Thread(new 文件处理(本文件.toFile())).start();
}
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e)
{
e.printStackTrace();
}
}
}
class 文件处理 implements Runnable
{
File file;
static Translater translater = new GoogleTranslater();
public 文件处理(File file_1)
{
file = file_1;
}
@Override
public void run()
{
try
{
文件装入list(file);
} catch (IOException e)
{
e.printStackTrace();
}
}
public static void 文件装入list(File file) throws IOException
{
Path fileUrl = Paths.get(file.getAbsolutePath());
List<String> lines = Files.readAllLines(fileUrl);
StringBuffer 块内容 = new StringBuffer();
boolean 有块内容 = false;
int 块内容行数 = 0;
for (int num = 0; num < lines.size(); num++)
{
String 行内容 = lines.get(num);
String 行内容去空白=行内容.trim();
if (行内容去空白.indexOf("/*") >= 0 && (行内容去空白.indexOf("*/") >= 0))// && 行内容去空白.indexOf("/*") <(行内容去空白.indexOf("*/"))
{//一行块注释
String[] 行内容数组=行内容.split("/\\*");
有块内容 = false;// 这里直接调用翻译
块内容行数 = 0;
String 翻译后行内容 = translater.translate(行内容数组[1], GoogleLanguage.ENGLISH.toString(), GoogleLanguage.CHINESE_SIMPLIFIED.toString());
lines.set(num, 行内容数组[0]+" /*"+翻译后行内容.replaceAll("/ \\*", "/\\*").replaceAll("\\* /", "\\*/").replaceAll(" \\*", "\n\\*"));
}else if(行内容去空白.indexOf("//")==0)//整行注释
{
String 翻译后行内容 = translater.translate(行内容, GoogleLanguage.ENGLISH.toString(), GoogleLanguage.CHINESE_SIMPLIFIED.toString());
lines.set(num, 翻译后行内容.replaceAll("/ ", "/"));
}else if(行内容去空白.indexOf("//")>0)//行尾注释
{
String[] 行内容数组=行内容.split("//");
String 翻译后行内容 = translater.translate(行内容数组[1], GoogleLanguage.ENGLISH.toString(), GoogleLanguage.CHINESE_SIMPLIFIED.toString());
lines.set(num, 行内容数组[0]+" //"+翻译后行内容.replaceAll("/ ", "/"));
}else if (行内容去空白.indexOf("/*") == 0)
{
有块内容 = true;
块内容行数++;
块内容.append(行内容 + "\n");
}else
{
if (有块内容)
{
块内容行数++;
块内容.append(行内容 + "\n");
if (行内容.indexOf("*/") >= 0)
{
String 翻译后行内容 = translater.translate(块内容.toString(), GoogleLanguage.ENGLISH.toString(), GoogleLanguage.CHINESE_SIMPLIFIED.toString());
for (int i = 0; i < 块内容行数; i++)
{
lines.set(num - 块内容行数 + i,"");// +1
}
lines.set(num,翻译后行内容.replaceAll("/ \\*", "/\\*").replaceAll("\\* /", "\\*/").replaceAll("\\* /", "\\*/").replaceAll(" \\*", "\n\\*"));
块内容 = new StringBuffer();
有块内容 = false;
块内容行数 = 0;
}
}
}
}
Files.write(fileUrl, lines);
}
}
翻译后注释部分的格式会乱,不过可以手工进行整理。
翻译后的文件直接覆盖了原文件,以防万一请先对原文件夹进行备份。