0
A
回答
5
我會使用RandomAccessFile
:
public static byte[] readFileSegment(File file, long index, int count) {
RandomAccessFile raf = new RandomAccessFile(file, "r");
byte[] buffer = new byte[count];
try {
raf.seek(index);
raf.readFully(buffer, 0, count);
return buffer;
} finally {
raf.close();
}
}
有其他方法與內存映射文件,NIO等等 - 但是這應該很簡單。
1
您可以使用RandomAccessFile或帶有跳過的FileInputStream。
我最喜歡的是使用內存映射文件,因爲它僅加載到內存中,你用什麼,幾乎不使用堆(不管你用多少)
0
當然 - 執行大致相同的步驟,你會要將整個文件讀到一個字節數組中,除了丟棄所需文件的一部分而不是將它們添加到數組中。
這提出了一個非常相關的問題,你將如何檢測你想要的部分的邊界。如果它是特定的哨兵字節(例如11111111
),那麼這很簡單。如果你想要一些固定的偏移量就更容易了,只需要丟棄第一個字節,然後存儲以下字節,即m字節。
如果你正在檢測某種字節序列,那麼事情會變得更加複雜一些,因爲你必須維護到目前爲止匹配的部分的局部變量,然後如果它不匹配則丟棄如果整個序列結果匹配,則將整個序列或全部添加到輸出。
儘管如此,這個概念很簡單 - 從文件中讀取字節,就像在加載所有文件時一樣,但實際上只是將它們放在輸出數組中,如果它們是您想。
0
這其實在我需要得到一個文件最大的開頭部分一定字節大小的方式爲我工作:
try
{
int myDesiredCapacity = 100000; // 100KB
FileInputStream is = new FileInputStream(otherFile);
FileChannel fileChannel = is.getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(myDesiredCapacity);
byte[] bytes;
int byteCount = fileChannel.read(bb);
if(byteCount >= 0)
{
bb.flip();
bytes = bb.array();
FileOutputStream fileOutputStream = new FileOutputStream(targetFile);
fileOutputStream.write(bytes);
fileOutputStream.close();
bb.clear();
}
}
catch(IOException e)
{
e.printStackTrace();
}
相關問題
- 1. 將文件複製到數組中(Java)
- 2. 如何將一個字節數組複製到另一個字節數組中?
- 3. 將char數組的一部分複製到c中的字符串中
- 4. 將String字節數組的一部分追加到StringBuilder中
- 5. 將.wav文件讀取到Java中的字節數組中
- 6. 如何將文本文件的一部分複製到C中的字符串?
- 7. 如何將數組的一部分複製到新數組。 C#
- 8. 如何將二維數組的一部分複製到一維數組中?
- 9. 字節數組複製到c中的另一個字節數組#
- 10. C++將文件的某些部分複製到新文件中
- 11. 如何將一部分字符串複製到struct數組的元素中?
- 12. 在java中將二進制文件轉換爲字節數組?
- 13. 將數組的一部分複製到第二個數組中C
- 14. 如何將JSONArray中的字節複製到Byte數組
- 15. 在SQL中將字節數組複製到varbinary中
- 16. JAVA,將.mpg視頻文件幀存儲到字節數組中
- 17. 使用字節數組的一部分
- 18. Java:將字符串的特定部分存儲到數組中
- 19. 將數組中的字符串複製到新數組中
- 20. 將java複製到java中的數組時遇到問題
- 21. 將字符串的一部分複製到另一個C#中的字符串
- 22. 將n個字節的數據x複製到文件
- 23. 如何將int數組的一部分複製到C/C++中的另一個int數組中?
- 24. 試圖將struct成員複製到字節數組中c
- 25. 如何將一個字節數組粘貼到文件c#中?
- 26. 將文本文件複製到數組
- 27. 字節數組到十六進制和恢復的Java
- 28. 如何將字符串的一部分複製到另一個字符串中?
- 29. 將字節數組複製到具有多個工作表的Excel文件
- 30. 如何將一個數組中的數字複製到另一個數組
你所缺乏的第二個參數:RandomAccessFile的RAF =新RandomAccessFile的(文件,「r」); – 2017-02-03 04:12:07
你也應該支持多頭而不是整數。這是我的版本:http://tinybrain.de/1006742 – 2017-02-03 04:13:53
@StefanReich:修正了兩者,謝謝。 (儘管我保留了'count'的第三個參數,而不是提供'long'端點。) – 2017-02-03 06:56:58