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(" ");
}
}
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