Ява. Как добавить текст в начало файла file.txt
Мне нужно добавить текст в начало текстового файла через Java.
Например, у меня есть файл test.txt с данными:
Peter
John
Alice
Мне нужно добавить (в начало файла):
Jennifer
Это должно быть:
Jennifer
Peter
John
Alice
У меня есть часть кода, но она добавляет данные в конец файла, мне нужно сделать это, чтобы добавить текст в начало файла:
public static void irasymas(String irasymai){
try {
File file = new File("src/lt/test.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(irasymai+ "\r\n");
bw.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
Я пробовал это, но это только удаляет все данные из файла и не вставляет какой-либо текст:
public static void main(String[] args) throws IOException {
BufferedReader reader = null;
BufferedWriter writer = null;
ArrayList list = new ArrayList();
try {
reader = new BufferedReader(new FileReader("src/lt/test.txt"));
String tmp;
while ((tmp = reader.readLine()) != null)
list.add(tmp);
OUtil.closeReader(reader);
list.add(0, "Start Text");
list.add("End Text");
writer = new BufferedWriter(new FileWriter("src/lt/test.txt"));
for (int i = 0; i < list.size(); i++)
writer.write(list.get(i) + "\r\n");
} catch (Exception e) {
e.printStackTrace();
} finally {
OUtil.closeReader(reader);
OUtil.closeWriter(writer);
}
}
Благодарим вас за помощь.
Ответы
Ответ 1
Вы можете использовать RandomAccessFile и искать курсор в позиции 0th
с помощью seek(long position)
, прежде чем начинать писать.
Как объяснено в этой теме
RandomAccessFile f = new RandomAccessFile(new File("yourFile.txt"), "rw");
f.seek(0); // to the beginning
f.write("Jennifer".getBytes());
f.close();
Изменить: Как указано ниже многими комментариями, это решение перезаписывает содержимое файла с самого начала. Чтобы полностью заменить содержимое, файл, возможно, придется удалить и переписать.
Ответ 2
File mFile = new File("src/lt/test.txt");
FileInputStream fis = new FileInputStream(mFile);
BufferedReader br = new BufferedReader(fis);
String result = "";
String line = "";
while( (line = br.readLine()) != null){
result = result + line;
}
result = "Jennifer" + result;
mFile.delete();
FileOutputStream fos = new FileOutputStream(mFile);
fos.write(result.getBytes());
fos.flush();
Идея читается всем, добавьте строку спереди. Удалить старый файл. Создайте новый файл с выделенной строкой.
Ответ 3
Следующий код работал у меня. Снова он, очевидно, заменит байты в начале файла. Если вы можете определить, сколько байтов замены будет сделано заранее, вы можете использовать это. В противном случае следуйте более ранним ответам или посмотрите здесь Написание в начале текстового файла Java
String str = "Jennifer";
byte data[] = str.getBytes();
try {
RandomAccessFile f = new RandomAccessFile(new File("src/lt/test.txt"), "rw");
f.getChannel().position(0);
f.write(data);
f.close();
} catch (IOException e) {
e.printStackTrace();
}