java - 为什么此 Java 代码不使用 # 跳过行?

标签 java file-io

我是个新手,但我正在尝试让 Java 脚本读取的外部 .txt 文件能够在文件的开头包含一些注释,以便其他人可以轻松地编辑它并添加更多的是它。 但是,如果文件包含#(为注释行指定的符号),它只会返回错误,即“文件中存在格式错误”(IOException - 所以它正在通过第一个“IF”...... ) 有人可以帮忙吗?

这是处理脚本前面调用的 .txt 文件中的注释行的代码部分:

   while ((line = br.readLine()) != null) {
    line = line.trim();
    if (line.length() < 1 || line.charAt(0) == '#') { // ignore comments
     continue;
    }
    final String[] parts = line.split("=");
    if (parts.length != 2) {
     throw new IOException("Format error in file "
       + JLanguageTool.getDataBroker().getFromRulesDirAsUrl(getFileName())
       + ", line: " + line);
    }

input.txt 文件在第一行中断它:

#This is a Test
ឲ្យ|ឱ្យ=អោយ
កំពស់=កម្ពស់
កម្នាញ់=កំណាញ់

这是实际的错误:

Caused by: java.io.IOException: Format error in file

file:/D:/Documents......./coherency.txt, line: #This is a Test at rules.km.KhmerSimpleReplaceRule.loadWords(KhmerSimpleReplaceRule.java:165) at rules.km.KhmerSimpleReplaceRule.loadWords(KhmerSimpleReplaceRule.java:82) ...33 more

堆栈跟踪错误:

Caused by: java.io.IOException: Format error in file [Ljava.lang.StackTraceElement;@1cb2795 at km.KhmerSimpleReplaceRule.loadWords(KhmereSimpleReplaceRule.java: 169)

最佳答案

您的第一个可见字符前面可能有一个 UTF-8 字节顺序标记。大多数编辑器不会显示这些字符,因为唯一预测内容的编码并且 Java 不会删除 UTF-8 字节顺序标记(与 UTF-16 和 32 不同)。如果确实存在 UTF-8 BOM,则您必须自己删除这三个字节。

有关更多详细信息,请参阅 Java-Bug 6378911 .

关于java - 为什么此 Java 代码不使用 # 跳过行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678108/

相关文章:

c++ - 我的 C++ 程序中的文件输入有问题

java - 单击 EditText 时的 TimePicker 对话框

java - String.equals 不会返回 true,即使它是

php - 切换到 mysqli 后 LOCAL INFILE 的问题

java - 文件读取IO

python - 在 C 和 Python 之间读写 Fifo 文件

java - Java Swing 中的 IllegalComponentStateException

java - JBoss有一个embeddable ejb3,Embeddable EJB3有什么用?

java - 使用 JMockit 中的现有类模拟类(替换 `redefineMethods` )

c - 为什么我的服务器只将文件的第一行写入客户端?