我正在寻找一种可以将文件的二进制数据读入字符串的方法。 我找到了一个直接读取字节并将字节转换为二进制的字符,唯一的问题是我正在开发这个用于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;
}
答案 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)
此链接可以帮助您:
public static byte [] toByteArray(InputStream input)抛出IOException
以byte []的形式获取InputStream的内容。这种方法缓冲 内部输入,所以不需要使用 的BufferedInputStream。
参数:input - 要读取的InputStream返回: 请求的字节数组抛出:NullPointerException - 如果输入是 null IOException - 如果发生I / O错误