Java - 想通过eof解析。代码只解析一次

标签 java parsing eof datainputstream

我下面的代码只解析了一次数据文件。我试图让它解析整个文件。每次找到标记时,解析数据并将其附加到输出文件。目前它成功地解析了一次数据然后停止。在eof之前无法弄清楚如何让它循环。数据是 4 字节对齐的,位于输入二进制文件中。

 private static void startParse(File inFile) throws IOException {
      boolean markerFound = false;
      for (int offset = 0; !markerFound && offset < 4; offset++){
         DataInputStream dis = new DataInputStream(new FileInputStream(inFile));
         for (int i = 0; i < offset; i++){
             dis.read();
         }
         try {
             int integer;
             long l;
             while((l = (integer = dis.readInt())) != MARKER) {
                 //Don't do anything
             }
             markerFound = true;
             for (int i = 0; i < 11; i++){
                 dis.read();
             }

     // ********************** data **********************          
             byte[] data = new byte[1016];
             for(int i = 0; i < 1016; i++){
             data[i] = (byte) dis.read();
             }

             for (int i = 0; i < 4; i++){
                 dis.read();
             }

     // ***************** output data ********************
             if (checksumCheck(checksum) && fecfCheck(fecf)){
                 FileOutputStream output = new FileOutputStream("ParsedData", true);
            try{
                output.write(data);
            } 
            finally{
                output.close();
            }
        }

    }               
    catch (EOFException eof) {
    }
    dis.close();
 }
 }

最佳答案

markerFound = true;

这一行不在条件语句中,将在任何循环出现时执行。
这当然会关闭你的循环,因为:

for (int offset = 0; !markerFound && offset < 4; offset++)

关于Java - 想通过eof解析。代码只解析一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968404/

相关文章:

java - 椭圆形最上面的五行被删除。为什么?

java - 使用 javascript 动态添加重复(唯一 ID)表单 Div 元素

java - 编辑maven的设置文件

java - Nimbus L&F 尝试使用 UIManager 更改 JFormattedTextField 的背景颜色

perl - 只能 'perl6'解析Perl 6吗?

parsing - 从使用 Scala Parser Combinators 编写的解析器返回有意义的错误消息

python-3.x - Python 3.7,Feedparser 模块无法解析 BBC 天气提要

java - 意外的缓冲读取器行为 : skipping odd-numbered lines

perl - 检查到 websocket 的连接是否仍然使用 Net::Async::WebSocket 打开

java - 向 TCP 服务器指示 Java TCP 客户端已完成写入流