Ответ 1
Просто напечатайте пустую строку в файле:
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
Я хочу скопировать содержимое файла 'A' в файл 'B'. после завершения копирования я хочу очистить содержимое файла "A" и хочу написать на нем с самого начала. Я не могу удалить файл "A", поскольку он связан с какой-то другой задачей.
Мне удалось скопировать содержимое с помощью java файла API (readLine()), но не знаю, как очистить содержимое файла и установить указатель файла на начало файла.
Просто напечатайте пустую строку в файле:
PrintWriter writer = new PrintWriter(file);
writer.print("");
writer.close();
Я не верю, что вам даже нужно написать пустую строку в файл.
PrintWriter pw = new PrintWriter("filepath.txt");
pw.close();
Вы хотите метод setLength() в классе RandomAccessFile.
Просто, ничего не пишите!
FileOutputStream writer = new FileOutputStream("file.txt");
writer.write(("").getBytes());
writer.close();
Один вкладыш для выполнения операции усечения:
FileChannel.open(Paths.get("/home/user/file/to/truncate"), StandardOpenOption.WRITE).truncate(0).close();
Дополнительная информация доступна в документации по Java: https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html
После копирования из A в B открыть файл A еще раз, чтобы записать режим, а затем записать в него пустую строку
Просто напишите:
FileOutputStream writer = new FileOutputStream("file.txt");
Как насчет ниже:
File temp = new File("<your file name>");
if (temp.exists()) {
RandomAccessFile raf = new RandomAccessFile(temp, "rw");
raf.setLength(0);
}
Один из лучших компаньонов для java - Apache Projects и, пожалуйста, обратитесь к нему. Для работы с файлами вы можете обратиться к проекту Commons IO.
Ниже один код строки поможет нам сделать файл пустым.
FileUtils.write(new File("/your/file/path"), "")
Напишите пустую строку в файл, очистите и закройте. Убедитесь, что файловый писатель не находится в режиме добавления. Я думаю, что это должно было сделать трюк.
Если вам не нужно использовать автора, то самый короткий и самый чистый способ сделать это будет следующим:
new FileWriter("/path/to/your/file.txt").close();
Вы можете использовать
FileWriter fw = new FileWriter(/*your file path*/);
PrintWriter pw = new PrintWriter(fw);
pw.write("");
pw.flush();
pw.close();
Не забудьте использовать
FileWriter fw = new FileWriter(/*your file path*/,true);
True в конструкторе конструктора позволяет добавлять.
FileOutputStream fos = openFileOutput("/*file name like --> one.txt*/", MODE_PRIVATE);
FileWriter fw = new FileWriter(fos.getFD());
fw.write("");
С Try-with-Resources Writer будет автоматически закрыт:
import org.apache.commons.lang3.StringUtils;
final File file = new File("SomeFile");
try (PrintWriter writer = new PrintWriter(file)) {
writer.print(StringUtils.EMPTY);
}
// here we can be sure that writer will be closed automatically
используя: Новая библиотека Java 7 NIO, попробуйте
if(!Files.exists(filePath.getParent())) {
Files.createDirectory(filePath.getParent());
}
if(!Files.exists(filePath)) {
Files.createFile(filePath);
}
// Empty the file content
writer = Files.newBufferedWriter(filePath);
writer.write("");
writer.flush();
Приведенный выше код проверяет, существует ли Directoty, если не создает каталог, проверяет, существует ли файл, да, он записывает пустую строку и очищает буфер, в конце вы получаете средство записи, указывающее на пустой файл
Все, что вам нужно сделать, это открыть файл в режиме усечения. Любой класс Java файлов автоматически сделает это за вас.
вы можете написать общий метод, поскольку (его слишком поздно, но ниже код поможет вам/другим)
public static FileInputStream getFile(File fileImport) throws IOException {
FileInputStream fileStream = null;
try {
PrintWriter writer = new PrintWriter(fileImport);
writer.print(StringUtils.EMPTY);
fileStream = new FileInputStream(fileImport);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
writer.close();
}
return fileStream;
}