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

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

我现在想把100万数据分成4个25万的数据。数据的内容是一些数字,以string的形式保存在txt文件中,每个数字后面都跟一个空格,形如“1 2 3 4 5...”。

我在网上查到的都是以字节为单位读取,怎么才能以一个单独的数字为单位,每次读取25万个。还有文件这么大,怎么读入内存?

求指教


我瞎说一下啊。
用char 和正则 提取每一个数字呢? 把String转换为char数组
文件大的话= - =这个就不知道了


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();
    }
    
    

    

我也是刚学的,希望对你有帮助,如果有不对的地方,望指出,共同学习

【热门文章】
【热门文章】