尝试解析从文件中获取的JSON字符串时遇到问题。我的问题是,读入时零宽度不间断空格字符(Unicode
0xfeff)在字符串的开头,我无法摆脱它。我不想使用正则表达式,因为可能会有其他隐藏字符具有不同的unicode。
这是我所拥有的:
StringBuilder content = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader("src/test/resources/getStuff.json"));
String currentLine;
while((currentLine = br.readLine()) != null) {
content.append(currentLine);
}
br.close();
} catch(Exception e) {
Assert.fail();
}
这是JSON文件的开始(复制粘贴整个内容太长,但是我已经确认它是有效的):
{"result":{"data":{"request":{"year":null,"timestamp":1413398641246,...
到目前为止,这是我尝试过的方法:
如何在不以零宽度不间断空格开头的字符串开头读取此文件?
0xEF 0xBB 0xBF
是UTF-8
BOM,0xFE 0xFF
是UTF-16BE
BOM和0xFF 0xFE
是UTF-16LE
BOM。如果0xFEFF
在字符串的开头存在,则表示您已创建带有BOM的UTF编码文本文件。UTF-16
BOM可以原样显示0xFEFF
,而UTF-8
BOM只会显示0xFEFF
BOM本身已从UTF-8解码为UTF-16(这意味着读者可以检测到BOM,但不会跳过)。
。实际上,众所周知Java不处理UTF-8 BOM(请参见Bug
JDK-4508058和JDK-6378911)。
如果您阅读该FileReader
文档,它将显示:
此类的构造函数假定默认字符编码和默认字节缓冲区大小是适当的。要自己指定这些值,请在FileInputStream上构造一个InputStreamReader。
您需要使用一种识别字符集的阅读器来读取文件内容,最好是一种能够为您阅读BOM并根据需要在内部进行调整的阅读器。但更糟糕的情况是,您可以自己打开文件,读取前几个字节以检测是否存在BOM表,然后使用适当的字符集构造读取器以读取文件的其余部分。这是一个使用此功能的示例org.apache.commons.io.input.BOMInputStream
:
String defaultEncoding = "UTF-8";
InputStream inputStream = new FileInputStream(someFileWithPossibleUtf8Bom);
try {
BOMInputStream bOMInputStream = new BOMInputStream(inputStream);
ByteOrderMark bom = bOMInputStream.getBOM();
String charsetName = bom == null ? defaultEncoding : bom.getCharsetName();
InputStreamReader reader = new InputStreamReader(new BufferedInputStream(bOMInputStream), charsetName);
//use reader
} finally {
inputStream.close();
}
问题内容: 我有两个过程,其中一个正在写(附加)到文件,另一个正在从文件读取。这两个进程正在同时运行,但无法通信。另一个读取器进程可能在写入器进程完成之前开始。 这种方法有效,但read()通常返回已读取零字节且无错误的信息。它们的零长度读取与非零长度读取之比很高,效率很低。 有没有办法解决?这是在POSIX文件系统上。 问题答案: 没有通信通道,就无法保证在读取正在写入的文件时,防止零字节读取甚
现在,我只是尝试读取与Java类存储在同一目录中的文件内容,并访问其长度。但是,每当传递正确的文件名以创建新的对象时,其长度返回为零。我假设这是因为由于某种原因找不到该文件。 我的文件结构如下: 我尝试用,其中等于。
我收到一个错误,这个读取while循环。即使我用打印所有内容,它也会显示count tt==0。这意味着,while循环甚至不工作? 尝试捕获输入。 这是我有问题的代码。 这是我正在阅读的文本文件
问题内容: 我正在使用Java在Linux EXTREME VPS上存储图像 当我将其存储在服务器路径上时 使用以下代码读取路径 当我使用上面的代码阅读时,我得到以下异常 如何解决这个问题呢? 还有其他从Linux服务器读取文件的方法吗? 问题答案: 我认为问题在于您使用的文件路径错误。 您说您正在Linux服务器上读取文件,似乎您正在尝试在Windows计算机上读取文件。由此推断,您已将Linu
我试图从一个名为poll.txt的文件中获取数据集,然后使用相关数据。 poll.txt内容: 源代码,选举票.java: 但是,当我运行程序时,在给出异常之前,只使用了其中一行: 我试着在“scanner.nextLine();”语句中移动,但没有用。如果我不要求nextLine,这个程序运行良好,但我显然需要它,而且我似乎不知道出了什么问题。
问题内容: 我提出了一个错误: 我想在网上阅读HTML文件 问题答案: 您的URI不是URI。没有协议组件。它需要http://或您打算使用的其他协议。