Java - как очистить текстовый файл, не удаляя его?



Мне интересно, как лучше всего очистить файл. Я знаю, что java автоматически создает файл с



f = new Formatter("jibberish.txt");  
s = new Scanner("jibberish.txt");


Если таковой еще не существует. Но что, если он существует, и я хочу очистить его каждый раз, когда запускаю программу? Вот что мне интересно: повторяю еще раз, как очистить файл, который уже существует, чтобы просто быть пустым?
Вот о чем я думал:



public void clearFile(){
//go through and do this every time in order to delete previous crap
while(s.hasNext()){
f.format(" ");
}
}
1904   4  

4 ответов:

Если вы хотите очистить файл без удаления, возможно, вы можете обойти это

public static void clearTheFile() {
        FileWriter fwOb = new FileWriter("FileName", false); 
        PrintWriter pwOb = new PrintWriter(fwOb, false);
        pwOb.flush();
        pwOb.close();
        fwOb.close();
    }

Edit: он выбрасывает исключение, поэтому нужно поймать исключения

Лучшее, что я мог придумать, это:

Files.newBufferedWriter(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

И

Files.newInputStream(pathObject , StandardOpenOption.TRUNCATE_EXISTING);

В обоих случаях, если файл, указанный в pathObject, доступен для записи, то этот файл будет усечен. Нет необходимости вызывать функцию write (). Приведенного выше кода достаточно, чтобы очистить/усечь файл.Это новое в java 8.

Надеюсь, это поможет

Вы можете удалить файл и создать его снова, вместо того чтобы делать много операций ввода-вывода.

if(file.delete()){
    file.createNewFile();
}else{
    //throw an exception indicating that the file could not be cleared
}

С другой стороны, вы можете просто перезаписать содержимое файла на одном дыхании, как описано в других ответах:

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();

Кроме того, вы используете конструктор из Scanner, который принимает аргумент String. Этот конструктор не будет считывать данные из файла, а будет использовать аргумент String в качестве сканируемого текста. Сначала нужно создать дескриптор файла, а затем передать его в конструктор Scanner:

File file = new File("jibberish.txt");
Scanner scanner = new Scanner(file);

Вы можете просто напечатать пустую строку в файле.

PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();

Comments

    Ничего не найдено.