java - 读取上下文并重命名
java - read context and rename
一个文件夹中大约有 50 个 xml 个文件。我需要通读每个文件的内容并找到上下文(例如:年份)并在文件名中使用那一年。
此外,我需要增加。
例如,如果在其中 10 个文件中找到的上下文(年份)是 2013 年,则文件名应为 2013001、2013002、2013003、...、2013010。
希望这是清楚的。
谢谢
我 100% 没听懂,但是,您可以继续 Files 的 API。
您有许多有用的功能,例如:
- isDirectory : 判断路径是否为目录。
- list : 列出目录的所有条目
- 行:在文件(为您准备的文本文件)上创建一个流,以及
遍历每一行;你可以在这里找到你的年份。
- 移动:将文件移动或重命名为目标文件。
您可以递归地浏览目录并搜索每个文件的日期。之后你可以简单地重命名文件并将日期附加为字符串。(代码可能无法 100% 工作,因为我目前没有 IDE 来测试它。)
public void recursivelySearchFiles(String startPath) throws IOException {
File root = new File(startPath);
File[] list = root.listFiles();
if (list == null) return;
for ( File f : list ) {
if ( f.isDirectory() ) {
recursivelySearchFiles(f.getAbsolutePath());
}
else {
BufferedReader br = new BufferedReader(new FileReader(f));
String resultYear = "";
String line;
while ((line = br.readLine()) != null) {
resultYear = getSubStringFromString(line);
}
br.close();
renameFile(f, resultYear);
System.out.println( "File:" + f.getAbsoluteFile() );
}
}
}
public String getSubStringFromString(String line){
Pattern pattern = Pattern.compile("\d{4}");
Matcher matcher = pattern.matcher(line);
if (matcher.find())
{
return matcher.group(1);
}else{
return "";
}
}
public void renameFile(File oldfile, String year) throws IOException{
String newPath = oldfile.getAbsolutePath().substring(0, oldfile.getAbsolutePath().lastIndexOf("."));
String ending = oldfile.getAbsolutePath().substring(oldfile.getAbsolutePath().lastIndexOf(".")-1, oldfile.getAbsolutePath().length());
newPath += year;
File file2 = new File(newPath + ending);
if(file2.exists()) throw new java.io.IOException("file exists");
boolean success = oldfile.renameTo(file2);
if (!success) {
System.out.println("renaming not successful");
}
}
一个文件夹中大约有 50 个 xml 个文件。我需要通读每个文件的内容并找到上下文(例如:年份)并在文件名中使用那一年。
此外,我需要增加。
例如,如果在其中 10 个文件中找到的上下文(年份)是 2013 年,则文件名应为 2013001、2013002、2013003、...、2013010。
希望这是清楚的。
谢谢
我 100% 没听懂,但是,您可以继续 Files 的 API。 您有许多有用的功能,例如:
- isDirectory : 判断路径是否为目录。
- list : 列出目录的所有条目
- 行:在文件(为您准备的文本文件)上创建一个流,以及 遍历每一行;你可以在这里找到你的年份。
- 移动:将文件移动或重命名为目标文件。
您可以递归地浏览目录并搜索每个文件的日期。之后你可以简单地重命名文件并将日期附加为字符串。(代码可能无法 100% 工作,因为我目前没有 IDE 来测试它。)
public void recursivelySearchFiles(String startPath) throws IOException {
File root = new File(startPath);
File[] list = root.listFiles();
if (list == null) return;
for ( File f : list ) {
if ( f.isDirectory() ) {
recursivelySearchFiles(f.getAbsolutePath());
}
else {
BufferedReader br = new BufferedReader(new FileReader(f));
String resultYear = "";
String line;
while ((line = br.readLine()) != null) {
resultYear = getSubStringFromString(line);
}
br.close();
renameFile(f, resultYear);
System.out.println( "File:" + f.getAbsoluteFile() );
}
}
}
public String getSubStringFromString(String line){
Pattern pattern = Pattern.compile("\d{4}");
Matcher matcher = pattern.matcher(line);
if (matcher.find())
{
return matcher.group(1);
}else{
return "";
}
}
public void renameFile(File oldfile, String year) throws IOException{
String newPath = oldfile.getAbsolutePath().substring(0, oldfile.getAbsolutePath().lastIndexOf("."));
String ending = oldfile.getAbsolutePath().substring(oldfile.getAbsolutePath().lastIndexOf(".")-1, oldfile.getAbsolutePath().length());
newPath += year;
File file2 = new File(newPath + ending);
if(file2.exists()) throw new java.io.IOException("file exists");
boolean success = oldfile.renameTo(file2);
if (!success) {
System.out.println("renaming not successful");
}
}