java 文件随机读取_Java基础之读文件——使用通道随机读取文件(RandomFileRead)...

该篇博客展示了如何使用Java的NIO(New IO)来随机读取文件,通过FileChannel和ByteBuffer实现从文件中随机选取并读取指定数量的长整型数值。示例代码详细解释了如何定位文件中的随机位置并读取数据。
摘要由CSDN通过智能技术生成

import java.nio.file.*;

import java.nio.channels.FileChannel;

import java.io.IOException;

import java.nio.ByteBuffer;

public class RandomFileRead {

public static void main(String[] args) {

Path file = Paths.get(System.getProperty("user.home")).resolve("Beginning Java Struff").resolve("primes.bin");

if(!Files.exists(file)) {

System.out.println(file + " does not exist. Terminating program.");

System.exit(1);

}

final int PRIMESREQUIRED = 10;

final int LONG_BYTES = 8; // Number of bytes for type long

ByteBuffer buf = ByteBuffer.allocate(LONG_BYTES*PRIMESREQUIRED);

long[] primes = new long[PRIMESREQUIRED];

int index = 0; // Position for a prime in the file

try (FileChannel inCh = (FileChannel)(Files.newByteChannel(file))){

// Count of primes in the file

final int PRIMECOUNT = (int)inCh.size()/LONG_BYTES;

// Read the number of random primes required

for(int i = 0 ; i < PRIMESREQUIRED ; ++i) {

index = LONG_BYTES*(int)(PRIMECOUNT*Math.random());

inCh.read(buf, index); // Read the value

// inCh.position(index).read(buf); // Read the value

buf.flip();

primes[i] = buf.getLong(); // Save it in the array

buf.clear();

}

// Output the selection of random primes 5 to a line in field width of 12

int count = 0; // Count of primes written

for(long prime : primes) {

System.out.printf("%12d", prime);

if(++count%5 == 0) {

System.out.println();

}

}

} catch(IOException e) {

e.printStackTrace();

}

}

}

控制塔程序,本例从primes.bin文件中随机选择一些值进行提取。

Java基础之读文件——使用通道随机读写文件(RandomReadWrite)

控制台程序,使用通道随机读写primes_backup.bin文件. import static java.nio.file.StandardOpenOption.*; import java.nio ...

Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)

控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...

Java利用内存映射文件实现按行读取文件

我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...

&period;net上传文件,利用npoi读取文件信息到datatable里

整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...

php高效遍历文件夹、高效读取文件

/** * PHP高效遍历文件夹(大量文件不会卡死) * @param string $path 目录路径 * @param integer $level 目录深度 */ function fn_sc ...

Java基础之读文件——使用通道读取混合数据2(ReadPrimesMixedData2)

控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区 ...

Java基础之读文件——使用通道读取混合数据1&lpar;ReadPrimesMixedData&rpar;

控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式 ...

Java基础之读文件——使用通道读二进制数据(ReadPrimes)

控制台程序,本例读取Java基础之写文件部分(PrimesToFile)写入的primes.bin. import java.nio.file.*; import java.nio.*; import ...

Java基础之读文件——从文件中读取文本(ReadAString)

控制台程序,使用通道从缓冲区获取数据,读取Java基础之写文件(BufferStateTrace)写入的charData.txt import java.nio.file.*; import java ...

随机推荐

Docker命令详解

Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

UNIX基础--磁盘组织

磁盘组织 FreeBSD 查找文件的最小单位是文件名. 而文件名区分大小写,不凭文件扩展名去识别这个文件是 程序. 文档, 或是其他格式的数据. 在文件系统里目录和文件的作用是存储数据. 每一个文件系 ...

SQLite高级:一库建多表,封装类

package eoe.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; ...

微信公众号tp3&period;2放进Model无效&comma;几种实例化的方法试过,还是提示无法提供服务

http://www.imooc.com/video/10230 解决方案一: $indexModel = D('Index');  实测可行 解决方案一: 使用TP3.2的小伙伴需要注意了,在Mod ...

(转)每天一个linux命令(9):touch 命令

linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1 基本使用 1.命令格式: touch [选项]... 文件... 2.命令参数 ...

PHP安全相关的配置(1)

PHP作为一门强大的脚本语言被越来越多的web应用程序采用,不规范的php安全配置可能会带来敏感信息泄漏.SQL注射.远程包含等问题,规范的安全配置可保障最基本的安全环境.下面我们分析几个会引发安全问 ...

How To Change Log Rate Limiting In Linux

By default in Linux there are a few different mechanisms in place that may rate limit logging. These ...

I NETWORK &lbrack;thread1&rsqb; waiting for connections on port 27017

小技巧:mongodb安装完之后可以将安装目录的/bin添加到系统环境变量 一.问题 windows上安装完mongodb之后,设置完dbpath,一直卡在这里 二.解决办法 别关这个终端,再开个终端 ...

【转】使用sklearn做特征工程

1 特征工程是什么? 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值