How to split file into chunks while still writing into it?
private void getBytesFromFile(File file) throws IOException {
FileInputStream is = new FileInputStream(file); //videorecorder stores video to file
java.nio.channels.FileChannel fc = is.getChannel();
java.nio.ByteBuffer bb = java.nio.ByteBuffer.allocate(10000);
int chunkCount = 0;
byte[] bytes;
while(fc.read(bb) >= 0){
bb.flip();
//save the part of the file into a chunk
bytes = bb.array();
storeByteArrayToFile(bytes, mRecordingFile + "." + chunkCount);//mRecordingFile is the (String)path to file
chunkCount++;
bb.clear();
}
}
private void storeByteArrayToFile(byte[] bytesToSave, String path) throws IOException {
FileOutputStream fOut = new FileOutputStream(path);
try {
fOut.write(bytesToSave);
}
catch (Exception ex) {
Log.e("ERROR", ex.getMessage());
}
finally {
fOut.close();
}
}
Việc chia tách tập tin thành nhiều phần trong khi vẫn ghi vào đó phụ thuộc vào loại tập tin và hệ điều hành bạn đang sử dụng. Dưới đây là một số cách phổ biến:
Đối với tập tin văn bản:
Hệ điều hành Windows:
Sử dụng công cụ split được tích hợp sẵn trong Windows PowerShell. Ví dụ: để chia tách tập tin “largefile.txt” thành các tách tin 1GB có tên “file.txt.001”, “file.txt.002”, v.v., hãy sử dụng lệnh sau:
split -b 1073741824 largefile.txt file.txt.
Sử dụng trình soạn thảo văn bản như Notepad++ hoặc Sublime Text. Hầu hết các trình soạn thảo văn bản đều có tính năng chia tách và kết hợp tập tin.
Hệ điều hành Linux:
Sử dụng công cụ
split
tương tự như trong Windows.Sử dụng lệnh
dd
kết hợp với tham sốbs
để chia tách tập tin theo kích thước khối. Ví dụ: để chia tách tập tin “largefile.txt” thành các tách tin 512MB có tên “file.txt.001”, “file.txt.002”, v.v., hãy sử dụng lệnh sau:dd if=largefile.txt of=file.txt.001 bs=524288 count=1024
Đối với tập tin định dạng khác:
- Sử dụng công cụ chuyên dụng: Có nhiều công cụ miễn phí và trả phí có thể chia tách các loại tập tin khác nhau, chẳng hạn như hình ảnh, video, âm thanh, v.v. Một số công cụ phổ biến bao gồm HSplit, FFmpeg, và 7-Zip.
- Sử dụng lệnh dòng lệnh: Một số định dạng tập tin có thể được chia tách bằng các lệnh dòng lệnh. Ví dụ, tập tin ZIP có thể được chia tách bằng công cụ
zipsplit
trong hệ điều hành Unix.
Lưu ý:
- Việc chia tách tập tin có thể làm giảm hiệu suất truy cập, đặc biệt đối với các tập tin lớn.
- Nên sao lưu tập tin gốc trước khi chia tách để tránh mất dữ liệu.
- Khi ghi vào tập tin đã chia tách, hãy đảm bảo ghi vào tất cả các tách tin theo đúng thứ tự.