Tôi muốn xóa dòng đầu tiên của tệp văn bản trong Java. Tập tin này là vài gigabyte và tôi không muốn làm một bản sao. Sử dụng gợi ý từ this post, tôi đang cố gắng làm như vậy bằng cách sử dụng RandomAccessFile, tuy nhiên nó đang viết quá nhiều.Làm cách nào để thay thế dòng đầu tiên của một tệp lớn trong Java?
Đây là mã của tôi:
RandomAccessFile raInputFile = new RandomAccessFile(inputFile, "rw");
origHeaderRow = raInputFile.readLine();
raInputFile.seek(0);
raInputFile.writeChars(Strings.repeat(" ",origHeaderRow.length()));
raInputFile.close();
Và nếu bạn muốn có một số mẫu đầu vào và đầu ra, đây là những gì sẽ xảy ra:
Trước:
first_name,last_name,age
Doug,Funny,10
Skeeter,Valentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
Sau:
alentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
Trong ví dụ này, trong hầu hết các trình chỉnh sửa, tệp bắt đầu chính xác với 24 khoảng trắng, nhưng 48 ký tự (bao gồm cả dòng mới) đã được thay thế. Sau khi dán vào đây tôi thấy những câu hỏi kỳ lạ. Việc thay thế kích thước gấp đôi làm cho tôi điều gì đó liên quan đến mã hóa là nhận được sai lầm nhưng tôi đã thử writeUTF với kết quả tương tự.
Yay để sử dụng tên của tôi! –
Chỉ cần bạn biết, không thể chỉnh sửa tệp "tại chỗ" với hệ thống tệp hiện đại. Một bản sao mới luôn được thực hiện. – toto2
Tệp mã hóa là gì? 1521? UTF8? UCS2? –