gpt4 book ai didi

java - 我正在尝试修改文本文件中的某些行,当我再次将该行写回文件时,我最终得到一个空白文件

转载 作者:行者123 更新时间:2023-12-02 09:41:06 24 4
gpt4 key购买 nike

此代码正在读取一堆 .java 文件并查找“public [classname]”或“private [classname]”并将“System.out.println([classname])”添加到该行。

问题是当我写回该行时,我最终得到一个空白文件

有人能看出我做错了什么吗?

private static void work(ArrayList<File> fileList) {
for (int i = 0; i < fileList.size(); i++) {
replaceLines(fileList.get(i));
}

}

public static void replaceLines(File file) {
String path = file.getPath();
String fileNameLong = file.getName();
String fileName = null;
if (fileNameLong.contains(".java")) {
fileName = fileNameLong.substring(0, file.getName().indexOf("."));
}
if (fileName != null && fileName != "") {
System.out.println(fileName);
try {
//prepare reading
FileInputStream in = new FileInputStream(path);
BufferedReader br = new BufferedReader(
new InputStreamReader(in));
//prepare writing
FileWriter fw = new FileWriter(file);
PrintWriter out = new PrintWriter(fw);

String strLine;
while ((strLine = br.readLine()) != null) {
// Does it contain a public or private constructor?
boolean containsPrivateCon = strLine.contains("private "
+ fileName);
boolean containsPublicCon = strLine.contains("public "
+ fileName);

if (containsPrivateCon || containsPublicCon) {
int lastIndexOfBrack = strLine.lastIndexOf("{");

while (lastIndexOfBrack == -1) {
strLine = br.readLine();
lastIndexOfBrack = strLine.lastIndexOf("{");
}

if (lastIndexOfBrack != -1) {
String myAddition = "\n System.out.println(\""
+ fileName + ".java\"); \n";
String strLineModified = strLine.substring(0,
lastIndexOfBrack + 1)
+ myAddition
+ strLine.substring(lastIndexOfBrack + 1);
strLine = strLineModified;
}
}
out.write(strLine);
}
} catch (Exception e) {
System.out.println(e);
}
}

}

最佳答案

如果您想写入正在读取的同一个文件,则应该写入该文件的副本(不同的文件名),然后重命名输出文件,或者使用 RandomAccessFile就地编辑文件的界面。

通常,第一个解决方案比第二个解决方案更容易实现;除非文件很大(.java 文件可能不是这种情况),否则没有真正的理由使用第二个。

关于java - 我正在尝试修改文本文件中的某些行,当我再次将该行写回文件时,我最终得到一个空白文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com