我这里有这段代码,它接受 3 个参数,一个目录、一个文件名和一个数字。程序在目录中创建文件名并将数字写入其中。所以我可以说...
>java D: myName.txt Clay 100
这将在 D: 中创建一个名为 myName.txt 的文件,并在其中显示 100。
如果 myName 被占用,它将名称更改为 myName(2),然后是 myName(3)(如果 myName(2) 被占用)。唯一的问题是,当它将名称更改为 myName(2) 并写入时,它会覆盖 myName。我不希望它覆盖 myName,我希望它只创建一个具有该名称的新文件。我看过类似的问题,常见的答案是冲洗并关闭我做过的作家,但它仍然不起作用。
任何帮助将不胜感激,这是我的代码如此放屁......
import java.io.*;
public class filetasktest{
public static void main(String[] args) throws IOException{
int i = 2;
String directory = args[0];
if (directory.substring(directory.length() - 1) != "/"){
directory += "/";
}
String contactName = args[1];
String contactNumber = args[2];
String finalDirectory = directory + contactName + ".contact";
File f = new File(finalDirectory);
while (f.exists()){
finalDirectory = directory + contactName + "(" + ("" + i) + ")" + ".contact";
f.renameTo(new File(finalDirectory));
i++;
}
Writer writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(finalDirectory), "utf-8"));
writer.write(contactNumber);
} catch (IOException ex){
System.out.println(ex.getMessage());
} finally {
try {
writer.close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
}