我在文件中有以下一组字符串作为示例
ABCBDJHJHD#NASNAJBSJBSJBSBS#JAJBAJBSBSBSBS#AHBAHHSBSBSBVSVBVS#HGVGFGFGF
#JKHGHGHG#JHJHJHBHBHHGG#
HGFGFGJVVGV#JHBHBHBHB
一条记录的大小也可以以GB为单位!
在字符串内部,
#
是分隔符。那么,有什么办法可以读取小数据包中的行或最小的实体(如位),从而避免出现内存问题?我只想继续从磁盘读取
#
分隔的值,而不是将大行放在内存中,然后再进行进一步处理。任何建议请...!
谢谢
最佳答案
当然-就像BufferedReader.readLine
将行分隔符用作分隔符一样。 (readLine()
更复杂,因为\ r \ n和\ n都是分隔符)
public static String readUntil(BufferedReader r, char separator) throws IOException {
StringBuilder b = new StringBuilder();
int ch;
while ((ch = r.read()) != -1) {
if (ch == separator) {
return b.toString();
} else {
b.append((char) ch);
}
}
if (b.length() == 0) {
return null;
} else {
return b.toString();
}
}
并像这样调用它:
BufferedReader r = new BufferedReader(new FileReader(file));
String nextString;
while ((nextString = readUntil(r, '#')) != null) {
// Do something with nextString
}
关于java - 如何阅读明智的大弦大块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55133368/