我的目的是重命名一个文件。我正在做的是:我正在搜索文本文件中的特定字符串。在这么多文件中,如果找到那个特定的文本,那么我想用给定的字符串重命名该文本文件。
以下是我的尝试:
String opcode="OPCODES"; // String that I want to search.
File file = new File("D:\\CFF1156"); // All files are inside this folder.
System.out.println("The File Name is :"+file.getName());
File[] f = file.listFiles();
System.out.println("The Length of File is :"+f.length);
Boolean flag=false;
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;
for(int i=0;i<f.length;i++)
{
try{
reader = new BufferedReader(new FileReader(f[i]));
String text = null;
while ((text = reader.readLine()) != null)
{
if(text.contains(opcode))
{
System.out.println("Found");
System.out.println("The File Containing the Search text is :"+f[i]);
f[i].renameTo(new File("D://CFF1156/changed.txt"));
System.out.println("renamed :"+(f[i].renameTo(new File("D://CFF1156/changed.txt"))));
if(f[i].renameTo(new File("D://CFF1156/changed.txt")))
{
System.out.println("Successfully renamed");
}
else
{
System.out.println("Error");
}
}
}
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
finally
{
try
{
if (reader != null)
{
reader.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
以上代码正在搜索特定文件。但是我无法重命名它。
这个问题的解决方案是什么?
答案 0 :(得分:2)
您在循环中使用相同的名称重命名。首先解决这个问题。此外,请按boolean
方法在变量中返回renameTo()
值,并在if
中使用该变量。
答案 1 :(得分:1)
我很难阅读给定的代码,但renameTo
(see this javadoc)上有File
方法。请注意,它需要一个表示所需路径名的File对象,并返回一个布尔值。
答案 2 :(得分:1)
从重命名的Javadoc到
......,它可能不是原子的,它 如果一个文件有可能不会成功 目的地抽象路径名已经 存在。
在第二个renameTo命令中检查返回的布尔值。删除所有renameTo命令,或者存储第一个命令的布尔值并将此布尔值打印到控制台。
答案 3 :(得分:0)
首先,你有时使用\和其他时间//,我在Mac上,所以不确定你应该在Windows上使用什么。 其次,您将所有文件重命名为同名。
修正:
boolean renamed = f[i].renameTo(new File("D://CFF1156/changed"+ i + ".txt"));
System.out.println(renamed?"Succesfully renamed":"Error");