2013-05-15 3 views
1

У меня есть RAF, называемый data.bin и временный RAF, называемый temp.bin.Переименование RandomAccessFile

 data = new RandomAccessFile("data.bin","rws"); 
     temp = new RandomAccessFile("temp.bin","rws"); 

файл temp в основном файл data.bin, но я изменяю информацию в нем. поэтому после того, как я сделал изменение временного файла, как изменить имя temp.bin на data.bin и удалить старый data.bin?

Ive видел некоторые вещи о переименовании файлов с .renameTo() и другими, но это применимо к RandomAccessFile. и я не мог найти какой-либо метод для RAF

ответ

1

RandomAccessFile не был предназначен для замены класса File.

Он был разработан, чтобы читать чтение только более или менее.

Пожалуйста, используйте класс File, чтобы выполнить переименование.

+0

так, чтобы сделать это я просто делать? \t \t \t \t Файл fdata = new File ("data.bin"); Файл ftemp = новый файл ("temp.bin"); ftemp.renameTo (fdata); ftemp.delete(); – MadeInJapan

+0

Если вы переименуете его, не нужно удалять, я думаю. – Thihara

1

Закрыть RAF и использовать java.nio.file.Files.move для переименования временного файла. File.renameTo имеет обратную сторону. Если он не сможет переименовать файл, вы никогда не узнаете, почему, поскольку он просто возвращает true или false. Files.move бросает IOException, если сбой.

1

У меня была такая же проблема. я сделал что-то вроде этого:

data.close(); 
temp.close(); 
File tempfile = new File("c:/.../temp.bin"); 
File datafile = new File("c:/.../data.bin"); 
tempfile.renameTo(datafile); 

Для получения дополнительной информации: http://www.tutorialspoint.com/java/io/file_renameto.htm

+0

Вам нужно удалить файл данных, прежде чем переименовать 'temp' на него? –

+0

Я так не думаю, но этот код просто перестает работать здесь .-. Теперь я софию. Он говорит, что файл не закрыт, но я закрыл data.close() и temp.close() ... Я попытался закрыть канал, но не изменил его. Теперь мне нужна помощь с этим тоже kkkkk –

0

RandomAccessFile целью является для чтения/записи информации. Чтобы обрабатывать имена файлов, их существование и т. Д., Вы должны использовать класс File.

В вашем случае, вы должны сделать что-то вроде этого:

File d = new File("data"); // Declare your data RAF through File 
RandomAccessFile data = new RandomAccessFile(d,"rws"); 

public void foo(){ 
    File t = new File("temp"); // Declare your temp RAF through File 
    RandomAccessFile temp = new RandomAccessFile(t,"rws"); 
    //TODO data RAF alteration 
    data.close(); 
    d.delete(); //First delete data File, just in case 
    temp.close(); 
    File f = new File("data"); 
    t.renameTo(f); 
}