Вы должны смоделировать URL, используя вложенные ресурсы. Ожидаемый URL будет / авторы / 1 / сообщений. Думайте об авторах как о ресурсах. Прочитайте о вложенных ресурсах в этом руководстве: http://guides.rubyonrails.org/routing.html (прокрутите до 2.7 - Вложенные ресурсы).
Чтобы перезаписать файл foo.log с помощью FileOutputStream:
File myFoo = new File("foo.log");
FileOutputStream fooStream = new FileOutputStream(myFoo, false); // true to append
// false to overwrite.
byte[] myBytes = "New Contents\n".getBytes();
fooStream.write(myBytes);
fooStream.close();
или FileWriter:
File myFoo = new File("foo.log");
FileWriter fooWriter = new FileWriter(myFoo, false); // true to append
// false to overwrite.
fooWriter.write("New Contents\n");
fooWriter.close();
Я настоятельно рекомендую использовать для этого Apache Common FileUtil. Я нашел этот пакет бесценным. Его легко использовать и, что не менее важно, его легко прочитать / понять, когда вы вернетесь немного позже.
//Create some files here
File sourceFile = new File("pathToYourFile");
File fileToCopy = new File("copyPath");
//Sample content
org.apache.commons.io.FileUtils.writeStringToFile(sourceFile, "Sample content");
//Now copy from source to copy, the delete source.
org.apache.commons.io.FileUtils.copyFile(sourceFile, fileToCopy);
org.apache.commons.io.FileUtils.deleteQuietly(sourceFile);
Дополнительную информацию можно найти по адресу: http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
См .: java.io.RandomAccessFile
Вам нужно открыть файл для чтения и записи, поэтому:
RandomAccessFile raf = new RandomAccessFile("filename.txt", "rw");
String tmp;
while (tmp = raf.readLine() != null) {
// Store String data
}
// do some string conversion
raf.seek(0);
raf.writeChars("newString");
Если вы просто не добавляете контент в конце, разумно так сделать. Если вы добавляете, попробуйте FileWriter с конструктором добавления.
Несколько лучший порядок будет:
К сожалению, renameTo не гарантирует выполнения атомарного переименования.
В приведенном ниже примере значение «false» приводит к перезаписи файла, значение true - наоборот.
File file=new File("C:\Path\to\file.txt");
DataOutputStream outstream= new DataOutputStream(new FileOutputStream(file,false));
String body = "new content";
outstream.write(body.getBytes());
outstream.close();
Бывают случаи, когда можно захотеть сохранить огромный пустой файл, чтобы избежать дополнительных затрат на выделение места ОС на основе необходимости. Обычно это делается базами данных, виртуальными машинами, а также пакетными программами, которые обрабатывают и записывают массовые данные. Это значительно повысит производительность приложения. В этих случаях написание нового файла и переименование его не очень поможет. Вместо этого пустой файл придется заполнять. Именно тогда нужно перейти в режим переопределения.