У меня есть этот код, который принимает 3 аргумента: каталог, имя файла и число. Программа создает имя файла в каталоге и записывает в него номер. Так что могу сказать...
>java D: myName.txt Clay 100
который создаст файл с именем myName.txt в D: и в нем будет указано 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());
}
}
}
}