美文网首页技术栈
2019-04-30——Java IO RandomAccess

2019-04-30——Java IO RandomAccess

作者: 烟雨乱平生 | 来源:发表于2019-04-30 16:28 被阅读0次

    RandomAccessFile类实现了DataOutput和DataInput,所有该类既可以读文件也可以写文件。与普通的输入/输出流不同的是它可以自由访问文件的任意位置。

    方法

    方法 说明
    void seek(long pos) 可以将指针移动到某个位置开始读写;
    native void setLength(long newLength) 给写入文件预留空间
        /*多线程读取文件*/
        private void useRandomAccessFile(String filePath) throws FileNotFoundException {
            byte[] data = new byte[1024];
            File file = new File(filePath);
            /*获取文件长度*/
            long length = file.length();
            /*每个线程处理的长度*/
            long total = 1024*1;
            /*计算线程的总数*/
            int number = (int) (length/total)+1;
            /*获取系统内核数量*/
            int count = Runtime.getRuntime().availableProcessors();
            ExecutorService threadPool = new ThreadPoolExecutor(count,count*3,60, TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>());
            for(int i = 0; i<number; i++){
                int n = i;
                threadPool.execute(()->{
                    try {
                        RandomAccessFile raf = new RandomAccessFile(file,"rw");
                        raf.seek(total*n);
                        int totalSize = 0;
                        int size;
                        while ((size=raf.read(data))!=-1&&(totalSize+=size)<=total){
                            String content = new String(data,0,size);
                            System.out.println(content);
                        }
                        raf.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                });
            }
            threadPool.shutdown();
        }
    

    相关文章

      网友评论

        本文标题:2019-04-30——Java IO RandomAccess

        本文链接:https://www.haomeiwen.com/subject/fzcvnqtx.html