求代码!!用Java读取一个文件夹中所有的java文件,并读取文件的内容,把所有的tab(缩进符)替换为4个空格 5
1个回答
展开全部
仅供参考
package com.kidd.test.zhidao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* Hello world!
*
*/
public class Execute {
public static void main(String[] args) {
File file = new File("D:\\123");
listFile(file);
}
private static void listFile(File file) {
if (!file.exists() || !file.isDirectory()) {
System.out.println("文件路径不合法!");
return;
}
String[] strings = file.list();
File javaFile;
for (String filename : strings) {
javaFile = new File(file.getPath() + File.separator + filename);
if (javaFile.isFile()) {
if (filename.endsWith(".java")) {
try {
modifyFile(javaFile);
} catch (IOException e) {
e.printStackTrace();
}
}
} else if (javaFile.isDirectory()) {
listFile(javaFile);
}
}
}
private static void modifyFile(File javaFile) throws IOException {
BufferedReader bReader = new BufferedReader(new FileReader(javaFile));
File tempFile = new File(javaFile.getParent() + File.separator + javaFile.getName() + ".tmp");
if (!tempFile.exists() && !tempFile.createNewFile()) {
System.out.println("创建临时文件失败.临时文件路径为:" + tempFile.getPath());
bReader.close();
return;
}
BufferedWriter bWriter = new BufferedWriter(new FileWriter(tempFile));
String temp;
boolean modify = false;
while ((temp = bReader.readLine()) != null) {
if (!modify && temp.indexOf("\t") != -1) {
modify = true;
}
bWriter.write(temp.replaceAll("\t", " ")+"\r\n");
}
bWriter.close();
bReader.close();
if (modify) {
System.out.println("该文件需要修改.File=" + javaFile.getPath());
File bakFile = new File(javaFile.getPath() + ".bak");
if (!javaFile.renameTo(bakFile)) {
System.out.println("重命名源文件失败.源文件为:" + javaFile);
tempFile.delete();
return;
}
if (!tempFile.renameTo(javaFile)) {
System.out.println("重命名临时文件失败.");
if (!bakFile.renameTo(javaFile)) {
System.out.println("还原源文件失败,源文件现在的路径是:" + bakFile);
}
tempFile.delete();
return;
}
bakFile.delete();
} else {
System.out.println("该文件未存在需要修改的内容.File=" + javaFile.getPath());
tempFile.delete();
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询