从任何类型的文件读取二进制文件

时间:2015-12-31 22:54:47

标签: java android

我正在寻找一种可以将文件的二进制数据读入字符串的方法。 我找到了一个直接读取字节并将字节转换为二进制的字符,唯一的问题是我正在开发这个用于Android和手机没有太多的内存(RAM)而且很大文件将使应用程序重载,同时较小的文件工作正常。如果您想要代码,我可以提供所有代码,但我相信所需的一切都是更好的方法。

try {
    byte[] fileData = new byte[(int) sellect.length()];
    FileInputStream in = new FileInputStream(sellect);
    in.read(fileData);
    in.close();
    getBinary(fileData[0]);
    getBinary(fileData[1]);
    getBinary(fileData[2]);
} catch (IOException e) {
    e.printStackTrace();
}

" getBinary()"方法:

public String getBinary(byte bite) {
    String output = String.format("%8s", Integer.toBinaryString(bite & 0xFF)).replace(' ', '0');
    System.out.println(output); // 10000001
    return output;
}

2 个答案:

答案 0 :(得分:3)

你能做这样的事吗:

int buffersize = 1000;
int offset = 0;
byte[] fileData = new byte[buffersize];

int numBytesRead;
String string;
while((numBytesRead = in.read(fileData,offset,buffersize)) != -1)
{
 string = getBinary(fileData);//Adjust this so it can work with a whole array of bytes at once
 out.write(string); 
 offset += numBytesRead;
 }

这样,你永远不会在ram中存储比字节和字符串结构更多的信息。该文件一次读取1000个字节,一次转换为1个字节的字符串,然后作为字符串放入新文件中。使用read()返回它读取的字节数。

答案 1 :(得分:0)

此链接可以帮助您:

File to byte[] in Java

  

public static byte [] toByteArray(InputStream input)抛出IOException

     

以byte []的形式获取InputStream的内容。这种方法缓冲   内部输入,所以不需要使用   的BufferedInputStream。

     

参数:input - 要读取的InputStream返回:   请求的字节数组抛出:NullPointerException - 如果输入是   null IOException - 如果发生I / O错误