java数据输入流是否跳过字符?
我对DataInputStream有一个问题,它没有完全读取文件,因此经常(每33000个字符)跳过2-3个字符。我试图将文件(8MB)解析为json,但由于字符串中有跳过的字符,我无法将字符串解析为json
public static String readTemplate(String templateName) throws IOException
{
log.info("Opening Template");
InputStream resStream = this.getClass().getResourceAsStream("/assets/"+SpellCraftMod.MODID+"/templates/"+templateName+".json"); // I need to open the file that way
DataInputStream in = new DataInputStream(resStream);
String temp = "";
SpellCraftMod.log.info("Reading Data");
int available = 0;
while ((available = in.available()) > 0)
{
try
{
temp += in.readUTF();
} catch (EOFException ignore) {}
log.info("To GO: " + available);
}
log.info("Closing File");
in.close();
resStream.close();
return temp;
}
# 1 楼答案
用^{} 代替
DataInputStream
。前者从字符输入流中读取文本,缓冲字符,以便有效读取字符、数组和行。我更喜欢使用BufferedReader
而不是Scanner
来处理性能问题。另外,使用StringBuilder
而不是连接String
s以下是一个启动示例:
如果使用Java 6或更早版本,则必须使用
System.getProperty("line.separator");
而不是System.lineSeparator())
更多信息: