Post by Admin on Aug 2, 2017 11:31:46 GMT 7
Trong java ta vấn đề đọc và xử lý file là thường diễn ra, file chúng ta đọc thành bytearray cũng phải đọc thông qua ByteArrayOutputStream, và khi muốn ghi ra file chúng ta cũng cần phải ghi dữ liệu vào đâu đó, nếu file chỉ là chuỗi bình thường thì chỉ cần chuyển chuỗi thành bytearray, tuy nhiến nếu file có cấu trúc phức tạp, buộc ta phải dùng đến DataOutputStream, do đó ta dùng 1 class chức năng để tiện việc ghi dữ liệu.
ví dụ:
output op=new output();
//ghi vào dữ liệu là số nguyên 100, chiếm 4 bytes
op.dos.writeInt(100);
//ghi vào dữ liệu là chuỗi utf-8, cấu trúc gồm 2 bytes chiều dài chuỗi và dữ liệu chuỗi
op.dos.writeUTF("hòa bình thế giới");
File f=new File("a.txt");
FileInputStream fis=new FileInputStream(f);
//ghi dữ liệu file a.txt vào class ghi dữ liệu
op.readstream(fis);
//xuất dữ liệu ra bytearray
byte[] data=op.bytes();
class output {
ByteArrayOutputStream bos;
DataOutputStream dos;
public output() {
bos = new ByteArrayOutputStream();
dos = new DataOutputStream(bos);
}
//hàm dùng để đọc InputStream
public void readstream(InputStream is) {
try {
int c;
byte[] bf = new byte[8096];
while ((c = is.read(bf)) != -1) {
dos.write(bf, 0, c);
}
is.close();
} catch (Exception e) {
System.out.println("readstream ERR\t" + e.getMessage());
}
}
//hàm chuyển thành dữ liệu bytearray
public byte[] bytes() {
try {
byte[] bf = bos.toByteArray();
dos.close();
bos.close();
return bf;
} catch (Exception e) {
System.out.println("output\t" + e.getMessage());
}
return null;
}
}
ví dụ:
output op=new output();
//ghi vào dữ liệu là số nguyên 100, chiếm 4 bytes
op.dos.writeInt(100);
//ghi vào dữ liệu là chuỗi utf-8, cấu trúc gồm 2 bytes chiều dài chuỗi và dữ liệu chuỗi
op.dos.writeUTF("hòa bình thế giới");
File f=new File("a.txt");
FileInputStream fis=new FileInputStream(f);
//ghi dữ liệu file a.txt vào class ghi dữ liệu
op.readstream(fis);
//xuất dữ liệu ra bytearray
byte[] data=op.bytes();