说我们有一个像这样的文件:
one
two
three
(但此文件已加密)
我的加密方法以字节[]类型返回内存中的整个文件。
我知道字节数组没有“行”的概念,这是Scanner(例如)可以拥有的。
我想遍历每行,将其转换为字符串并对其执行操作,但我不知道 如何:
- 在字节数组中查找行
- 将原始字节数组切片为“ lines”(我会将这些切片转换为String,以发送给其他方法)
- 正确遍历一个字节数组,其中每次迭代都是一条新的“行”
还:我是否需要考虑文件可能组成的其他操作系统?我知道Windows和Linux中的新行之间存在一些差异,我不希望我的方法仅适用于一种格式。
编辑:按照此处回答的一些提示,我能够编写一些代码来完成工作。我仍然想知道这段代码是否值得保留,或者我正在做将来可能会失败的事情:
byte[] decryptedBytes = doMyCrypto(fileName,accessKey);
ByteArrayInputStream byteArrInStrm = new ByteArrayInputStream(decryptedBytes);
InputStreamReader inStrmReader = new InputStreamReader(byteArrInStrm);
BufferedReader buffReader = new BufferedReader(inStrmReader);
String delimRegex = ",";
String line;
String[] values = null;
while ((line = buffReader.readLine()) != null) {
values = line.split(delimRegex);
if (Objects.equals(values[0],tableKey)) {
return values;
}
}
System.out.println(String.format("No entry with key %s in %s",tableKey,fileName));
return values;
尤其是,我被建议显式设置编码,但是我看不到确切的位置?