首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取输入流和基于分隔符的拆分

读取输入流和基于分隔符的拆分
EN

Stack Overflow用户
提问于 2015-08-17 18:23:47
回答 1查看 4.9K关注 0票数 3

我有一个场景,我将获得一个大数据作为输入流,它将有一个分隔符,并对其进行拆分和处理。我想处理,这完全在内存中,如果可能的话。现在,我正在通过scanner实现这一点,如下所示,在代码中:

代码语言:javascript
复制
package chap5_questions;

import java.util.Scanner;

public class paintjob_chp5 {

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;

    public class ScannerTest {
        public static void main(String[] args) {
            FileInputStream fin = null;
            try {
                fin = new FileInputStream(new File("E:\\Project\\Journalling\\docs\\readFile.txt"));

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            java.util.Scanner scanner = new java.util.Scanner(fin, "UTF-8").useDelimiter("--AABBCCDDEEFFGGHHIIaabbccdd");
            String theString = null;

            while (scanner.hasNext()) {
                theString = scanner.next();
                System.out.println(theString);
                functionToProcessStreams(theString); // This will actually do the processing.

            }

            scanner.close();
        }
    }
}

然而,我不确定这是否是最有效的方法。我想到的另一件事是在inputstream上使用read(b, off, len)函数,然后处理每个字节数组。然而,为此我需要知道分隔符的索引,它可能再次读取整个流。

请建议是否有更好的方法来做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2015-08-17 18:37:02

结合使用ScanneruseDelimiter()是很有效的:它使用(构造的)正则表达式,并且只会读取您的输入一次。

顺便说一句:即使这会耗费一点效率,使用易读的代码总是一个好主意。这将允许你更快地调整你的代码,并且你会犯更少的错误。过早优化是万恶之源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32047997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档