开发者社区> 问答> 正文

Java如何读取指定位置段的字符串?

我现在想把100万数据分成4个25万的数据。数据的内容是一些数字,以string的形式保存在txt文件中,每个数字后面都跟一个空格,形如“1 2 3 4 5...”。
我在网上查到的都是以字节为单位读取,怎么才能以一个单独的数字为单位,每次读取25万个。还有文件这么大,怎么读入内存?

展开
收起
蛮大人123 2016-03-11 18:56:54 3189 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    public static void main(String[] args) throws Exception {
            int max=5;    //每次读的长度,因为我的文件比较小,测试的长度也小
            FileReader file=new FileReader("E:\\a.txt");
            BufferedReader bufferedReader=new BufferedReader(file);
            char[] arr=new char[6];//缓冲区设置比较小
            int len=arr.length;
            len=bufferedReader.read(arr, 0, len);
            StringBuffer stringBuffer=new StringBuffer();
            stringBuffer.append(new String(arr));
            while (len!=-1) {
                len=bufferedReader.read(arr, 0, len);
                if(len!=-1){
                    stringBuffer.append(new String(arr).substring(0,len));//最后会有没覆盖的数据
                    if(stringBuffer.toString().split(" ").length>max){
                        bufferedReader.mark(max);        //标记下次读取的位置
                    //readAheadLimit - 在仍保留该标记的情况下,对可读取字符数量的限制。在读取达到或超过此限制的字符后,尝试重置流可能会失败。限制值大于输入缓冲区的大小将导致分配一个新缓冲区,其大小不小于该限制值。因此应该小心使用较大的值。 
                    //api上是这么解释的,但是我设置很小的时候下面还是读完了
                        break;
                    }
                }
            }
            bufferedReader.reset();
            System.out.println(stringBuffer.toString());
            //第二次读时候会接着上次读到的位置读
            len=arr.length;
            len=bufferedReader.read(arr, 0, len);
            stringBuffer=new StringBuffer();
            stringBuffer.append(new String(arr));
            while (len!=-1) {
                len=bufferedReader.read(arr, 0, len);
                if(len!=-1){
                    stringBuffer.append(new String(arr).substring(0,len));//最后会有没覆盖的数据
                }
            }
            System.out.println(stringBuffer.toString());
            bufferedReader.close();
            file.close();
        }
    2019-07-17 18:59:56
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载