Tôi có một tệp có chứa một số lượng văn bản thuần túy khi bắt đầu theo sau là nội dung nhị phân ở cuối. Kích thước của nội dung nhị phân được xác định bởi một số dòng văn bản thuần túy mà tôi đọc.Đọc chuỗi và nhị phân từ cùng một FileInputStream
Tôi đã sử dụng BufferedReader
để đọc các dòng riêng lẻ, tuy nhiên nó không cho thấy phương pháp nào để tham khảo đọc một mảng byte. Các readUTF
cho một DataInputStream
không đọc tất cả các cách để kết thúc của dòng, và các phương pháp readLine
không được chấp nhận.
Sử dụng phần cơ bản FileInputStream
để đọc trả về mảng byte trống. Bất kỳ đề xuất về cách đi về điều này?
private DOTDataInfo parseFile(InputStream stream) throws IOException{
DOTDataInfo info = new DOTDataInfo();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
int binSize = 0;
String line;
while((line = reader.readLine()) != null){
if(line.length() == 0)
break;
DOTProperty prop = parseProperty(line);
info.getProperties().add(prop);
if(prop.getName().equals("ContentSize"))
binSize = Integer.parseInt(prop.getValue());
}
byte[] content = new byte[binSize];
stream.read(content); //Its all empty now. If I use a DataInputStream instead, its got the values from the file
return info;
}
Có thể đăng mã cung cấp cho bạn các mảng trống? Nó không nên làm điều đó ... –
Tôi nghĩ rằng vấn đề là bufferedReader đọc dữ liệu nhị phân là tốt, bởi vì nó đệm dữ liệu. Điều này có nghĩa là không có gì để đọc từ InputStream - do đó kết quả mảng byte rỗng. –