linux下的RandomAccessFile类

Java RandomAccessFile 字节级随机读写原理与实战 RandomAccessFile 是 Java 中支持字节级随机访问的核心 IO 类,其本质是对操作系统 lseek 系统调用的直接封装,提供 seek、read、write 等原子性字节操作能力。不同于顺序流(如 FileInputStream),它不依赖缓冲或字符编码,而是以绝对字节偏移为寻址基础,适用于二进制协议解析、大文件分片校验、KV 存储底层实现等场景。技术价值在于极低的随机访问延迟(μs 级),而非吞吐量优势;典型应用包括金融行情回放、日志精准定位、断点续传及线程安全计数器。需警惕 rw 模式 阅读详情

linux下的RandomAccessFile类

备注:以下写得基本上是胡说八道,(但是不想删除)请阅读此页面的朋友换个页面或者换个博客浏览,谢谢-----飞羽飞之猪


当遇到以下情况
1 当读写大于内存大小的文件
2 当不想加载整个文件而需要读写文件某部分


Java的RandomAccessFile可能非常实用和方便
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。


如果在linux下面要实现这样的功能,可以使用mmap(系统调用)

下面首先介绍下mmap的使用,并写出一个简单的用mmap实现的RandomAccessFile的C++类,以满足用C++解决一开始提到的两种情况的需要。

mmap介绍
mmap例子
RandomAccessFile的C++实现


#######################################################################################
mmap介绍
mmap的定义:
void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);

函数参数解析:
参数fd为即将映射到进程空间的文件描述字,一般由open()返回.

len是映射到调用进程地址空间的字节数,它从被映射文件开头offset个字节开始算起。

prot参数指定共享内存的访问权限。可取如下几个值的或:PROT_READ(可读),PROT_WRITE(可写),PROT_EXEC(可执行),PROT_NONE(不可访问)。

 flags由以下几个常值指定:MAP_SHARED, MAP_PRIVATE, MAP_FIXED。其中,MAP_SHARED,MAP_PRIVATE必选其一,而MAP_FIXED则不推荐使用。

 offset参数一般设为0,表示从文件头开始映射。

参数addr指定文件应被映射到进程空间的起始地址,一般被指定一个空指针,此时选择起始地址的任务留给内核来完成。函数的返回值为最后文件映射到进程空间的地址,进程可直接操作起始地址为该值的有效地址。

########################################################################################

mmap例子

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>

int main()
{

//mmap第五个参数fd就是调用open()获得的,如果为-1则打开文件失败
 int fd;
 if ( (fd = open("./file", O_RDWR|O_CREAT, S_IRWXU)) < 0){
  printf("open file wrong!");
  return 1;
 }
 
 //mmap第二个参数len就是调用fstat()获得的,正常情况下不应该返回-1
 struct stat file_stat;
 if ( fstat( fd, &file_stat) < 0 )
 {
  printf(" fstat wrong");
  return 1;
 }


//mmap第一个参数一般为NULL,详情见上面的mmap参数说明
//mmap最六个参数为文件起始映射处,一般为0表示文件开始
 void *start_fp;
 if( ( start_fp = mmap(NULL, file_stat.st_size, PROT_READ, MAP_SHARED, fd, 0 )) == MAP_FAILED)
 {
  printf("mmap wrong");
  return 1;
 }

 //
  snprintf( (char *)start_fp, 4, "test");
  msync( start_fp, file_stat.st_size, MS_ASYNC);

 //munmap类似与Java的RandomAccessFile的close()函数,关闭文件映射功能。参数为映射返回的void*指针和映射文件长度,可以把它当成一般IO功能的关闭功能。
  if ( munmap( start_fp, file_stat.st_size ) < 0 )
  {
  printf("munmap wrong");
  return 1;
  }
}


内存映射的一般步骤:

用open系统调用打开文件, 并返回描述符fd.
用mmap建立内存映射, 并返回映射首地址指针start.
对映射(文件)进行各种操作, 显示(printf), 修改(sprintf).
用munmap(void *start, size_t lenght)关闭内存映射.
用close系统调用关闭文件fd.

############################################################################
RandomAccessFile的C++实现

下面是用mmap的一个RandomAccessFile的C++类实现,封装一些看上去"不怎么友好"的代码.
这个类只实现了读取char的功能,没有实现类似Java的RandomAccessFile可以读取任意类型的数据的功能。
在centos5,g++ 4.1.2 环境下测试可用

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>

//081125 snail
class RandomAccessFile
{
public:
 RandomAccessFile(const char* filePath);
 ~RandomAccessFile();
 bool isOpen()
 {
  return open_ok;
 }

 long length()
 {
  long size = 0;
  if (open_ok)
  {
   size = m_file_stat.st_size;
  }
  return size;
 }

 void seek(long pos)
 {
  if (pos > m_file_stat.st_size)
  {
   pos = m_file_stat.st_size;
  }
  m_offset = pos;
 }

 char readChar()
 {
  return m_file[m_offset];
 }

 const char* getError()
 {
  return m_error;
 }

private:
 bool open_ok;//RamomAccessFile is prepared ok
 char* m_file;//if is prepared ok,m_file stands for handle of RandomAccessFile
 char* m_error;//if is not prepared ok,m_error stands for error message
 struct stat m_file_stat;//stands for info of file which to be RandomAccess
 long m_offset;//offset to start of file
};

RandomAccessFile::RandomAccessFile(const char* filePath) :
 m_offset(0), open_ok(true)
{
 int fd;
 if ((fd = open("./file", O_RDWR | O_CREAT, S_IRWXU)) < 0)
 {
  m_error = "open file wrong!";
  open_ok = false;;
 }

 if (open_ok)
 {
  if (fstat(fd, &m_file_stat) < 0)
  {
   m_error = "fstat wrong";
   open_ok = false;
  }
 }

 if (open_ok)
 {
  if ((m_file = (char*) mmap(NULL, m_file_stat.st_size, PROT_READ,
    MAP_SHARED, fd, m_offset)) == MAP_FAILED)
  {
   m_error = "mmap wrong";
   open_ok = false;
  }
 }
}

RandomAccessFile::~RandomAccessFile()
{
 if (open_ok)
 {
  if (munmap(m_file, m_file_stat.st_size) < 0)
  {
   printf("munmap wrong");
  }
 }
}

int main()
{
 RandomAccessFile* raf = new RandomAccessFile("./file");
 if (raf->isOpen())
 {
  //printf("randomaccess file is prepared!/n");
  printf("raf length()-->%d/n", raf->length());
  raf->seek(0);
  printf("%c/n", raf->readChar());
 }
 else
 {
  printf(raf->getError());
 }

 delete raf;
}


#############################################################################
参考:
http://blog.youkuaiyun.com/dai_weitao/archive/2007/07/25/1707559.aspx
http://blog.youkuaiyun.com/eroswang/archive/2007/11/30/1908842.aspx
http://blog.csai.cn/user1/16820/archives/2008/25456.html

SFM(structure from motion 从运动恢复结构)和MVS(multi-view stereo 多视图立体视觉) 主要目的:SFM是重建稀疏点云的,MVS重建的是稠密点云。 输入的数据:SFM是没有标定的数据,而MVS输入的是标定的数据。 为什么SFM无法重建出稠密的点云,但是MVS可以? SFM中我们用来做重建的点是由特征匹配提供的!这些匹配点天生不密集!MVS则几乎对照片中的每个像素点都进行匹配,几乎重建每一个像素点的三维坐标,这样得到的点的密集程度可以较接近图像为我们展示出的清晰度。 SFM和MVS关系 SFM给MVS算好了输入视角的位姿,内参,稀疏点云以及它们的共视关系,MVS再利用这些信息以及彩色图 阅读详情

相关推荐

不用加速器!Google Earth Pro登录失败自救手册:从服务器连接到地图加载的完整排错流程

本文详细解析了Google Earth Pro登录失败的常见问题及解决方案,包括服务器连接失败、地图加载异常等。通过基础排查、内置修复工具使用和高级配置调整,帮助用户无需加速器即可解决启动问题、黑屏和转圈圈等困扰,提升软件使用体验。

weixin_29227425的博客 482

RandomAccessFile类使用详解(转)

1.RandomAccessFile特点 RandomAccessFile是java Io体系中功能最丰富的文件内容访问类。即可以读取文件内容,也可以向文件中写入内容。但是和其他输入/输入流不同的是,程序可以直接跳到文件的任意位置来读写数据。   因为RandomAccessFile可以自由访问文件的任意位置,所以如果我们希望只访问文件的部分内容,那就可以使用RandomAccessFile类。   与OutputStearm,Writer等输出流不同的是,RandomAccessFile类允许自由定位文件

weixin_46875212的博客 1754

fpga的希尔伯特变换实现

fpga的希尔伯特变换实现零.实现背景一.希尔伯特实现的基本原理2.实现1)matlab仿真1)fpga滤波器实现实现成本:fpga实现采用VIvado的FIR的IP核, 零.实现背景 因为今明工作项目需要使用到希尔伯特变换来处理问题,所以顺便就把设计流程和代码都整理下来,以便供他人使用。选用Xilinx的7系列板子,Vivado平台。 一.希尔伯特实现的基本原理 希尔伯特变换的物理意义十分简单:...

weixin_42219690的博客 1万+

RandomAccessFile写入文件异常情况

RandomAccessFile写入文件异常情况 读取文件的数字并改写时,数字的位数发生改变时write()方法写入数据出错问题 Example: 文件读入10后减一 写回times.txt; 出现的情况: 这个数字显然不是我们想看到的。 原因时原来的两位数字读取后 只要写入一位,虽然指针设置为0(也就是从头开始)但是写入的位数比之前少,导致原来数据的残留。 解决代码 import java.io.IOException; import java.io.RandomAccessFile; publi

qq_42635494的博客 1804

别再怕DRIVER_VERIFIER_DMA_VIOLATION蓝屏:手把手教你用WinDbg分析IOMMU与驱动冲突

本文深入解析DRIVER_VERIFIER_DMA_VIOLATION蓝屏错误,从IOMMU原理到实战排错,手把手教你使用WinDbg分析驱动冲突。通过理解DMA与IOMMU的核心机制、搭建分析环境、解读DMAR表与设备拓扑,最终定位问题驱动并提供解决方案,帮助开发者和IT运维人员有效应对此类系统崩溃问题。

weixin_30298497的博客 802

滤波器设计实战:Filter Solutions软件从入门到精通

本文是Filter Solutions滤波器设计软件的实战指南,从入门到精通。通过设计一个低通数字滤波器的完整流程,详细讲解了参数设置、FIR/IIR选择、窗函数及逼近函数应用。文章重点介绍了如何利用这款经典工具高效完成滤波器设计、性能权衡,并将设计成果导出至MATLAB等平台进行实际验证与应用,是信号处理工程师提升效率的实用参考。

weixin_29095049的博客 531

IO随机访问类——RandomAccessFile

一、随机访问类RandomAccessFile

Jewel’s blog 567

Claude Code(8):使用 skill-creator 打造属于测试人员的 Skills

本文介绍了如何使用Claude Code的skill-creator工具快速创建测试相关的Skills。skill-creator是一个专门用于创建新Skills的Skill,相比手动创建更高效。文章详细演示了安装skill-creator的步骤,并通过创建"测试计划编写助手"的实战案例,展示了如何通过对话方式定义Skill名称、触发条件和功能需求。skill-creator会自动生成完整的SKILL.md文件和目录结构,用户只需确认即可完成Skill创建。

blues_C的博客 524

Java之RandomAccessFile类存取数据

Java之RandomAccessFile类存取数据文章链接:知识点 RandomAccessFile类的方法理解; 利用RandomAccessFile写入和读取数据; 创建特定大小文件,并且分段插入数据; 新名词记录:{FileChannel#force(boolean), FileChannel:进行读写,映射和操作文件的通道;} RandomAccessFile类说明RandomAccess

姚镜堂 1303

Modbus协议介绍及解析

Modbus协议介绍及解析 1.Modbus简介 Modbus是一种广泛应用于工业控制领域串行通信协议,以其开放性、高可靠性、高效简单性、免费等优点,成为了工业领域通信协议的业界标准,是工业现场电子设备之间常用的连接方式。Modbus按其格式可分为Modbus-RTU,Modbus-ASCII,Modbus-TCP,其中前两者适用于串行通信控制网络中,例如RS485,RS232等,而Modbus-TCP主要应用于基于以太网TCP/IP通信的控制网络中。通过此协议,控制器相互之间、或控制器和其它设备之间进行通

逍遥子的博客 1万+

游戏开发中的CV:实时动作捕捉与虚拟交互

游戏开发中的CV:实时动作捕捉与虚拟交互​ ,人工智能,计算机视觉,大模型,AI,在当今游戏产业中,玩家对游戏体验的要求日益提高,追求更加真实、沉浸的交互感受。计算机视觉(Computer Vision,CV)技术的飞速发展,为游戏开发带来了革命性的突破,其中实时动作捕捉与虚拟交互技术更是成为提升游戏品质的核心驱动力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

Java IO学习笔记三:MMAP与RandomAccessFile

mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用。才能做内存映射),即:把内核的pagecache和文件的数据地址空间映射起来。方法,可以修改文件内容的指针,从而可以方便读取和修改文件中的任意位置。通过mmap生成的且是堆外的和文件映射的内存区域。方法就等同于File中的。

Practitioner 603

Ego Planner规划算法(上)——Ego Planner流程介绍

本系列文章用于学习记录Ego-Planner规划算法的相关内容,本系列文章是在在Fast Planner规划算法系列文章的基础上,展开对Ego Planner的相关介绍,主要包括Ego Planner算法流程和程序框架两部分,主要学习资料是深蓝学院的移动机器人运动规划课程

慕羽★的博客 1万+

linux java access,Java中RandomAccessFile类用法

Java中RandomAccessFile类只能访问文件,不能操作其他io设备支持随机访问在读写等长记录文件有优势实例:import java.io.*;class Employee {private String name;private int age;public static final int LEN = 8;String getName() {return name;}int getA...

weixin_33417703的博客 155

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RandomAccessFile使用小结

文章转载自:https://www.cnblogs.com/baoliyan/p/6225842.html   本文是基于Linux环境运行,读者阅读前需要具备一定Linux知识 RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持跳到文件任意位置读...

qq_34302506的博客 197

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java进程间传递返回_使用RandomAccessFile在两个java进程之间传递数据

public classTestRandomAccessFile {private static String FileName="aa.a";private static volatileLinux1 lx1;private static volatileLinux2 lx2;private static longfrom;private static voidclose(Closeable c...

weixin_33425215的博客 209

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

windows、Linux、Mac系统回车换行符的区别

1、window 回车+换行(\r\n)表示下一行 2、linux 换行(\n)表示下一行 3、苹果MAC OS 回车(\r)表示下一行 举个例子,java RandomAccessFile类用来读取文件,会经常用来随机读取文件位置。也可用来一行一行读取。来看一下一行一行读取数据的方法 readLine()。 public final String readLine() throws IO

yinfeifeiyin的专栏 990

java linux machine_java 收集linux信息

public class MachineCollectorimplements Runnable{private static int DEFAULT_INTERVAL = 30;private boolean isStopped = false;private RandomAccessFile procNetDevReader;private RandomAccessFile procMemIn...

weixin_32309375的博客 137

java log日志监控系统_Java实时监控日志文件并输出

最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据是新增加的,通过查看JDK 的帮助文档, java.io.RandomAccessFile可以解决这个问题.为了模拟这个问题,编写LogSvr和 LogView类,LogSvr不断向mock.log日志文件...

weixin_35098081的博客 1149

java 创建 文件 指定大小_在J中创建具有给定大小的文件

创建一个新的RandomAccessFile并调用setLength方法,指定所需的文件长度。 底层JRE实现应使用您环境中可用的最有效方法。以下程序import java.io.*;class Test {public static void main(String args[]) throws Exception {RandomAccessFile f = new RandomAccessFi...

weixin_39747511的博客 87

java 创建 文件 指定大小_用Java创建具有给定大小的文件

小编典典创建一个新的RandomAccessFile并调用setLength方法,指定所需的文件长度。底层JRE实现应使用您环境中可用的最有效方法。以下程序import java.io.*;class Test {public static void main(String args[]) throws Exception {RandomAccessFile f = new RandomAcces...

weixin_33309433的博客 346

java log日志监控系统_Java实时监控日志文件并输出的方法详解

前言最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据是新增加的,通过查看JDK 的帮助文档,java.io.RandomAccessFile可以解决这个问题.为了模拟这个问题,编写LogSvr和 LogView类,LogSvr不断向mock.log日志文...

weixin_26741799的博客 573

Java创建制定大小文件

RandomAccessFile ra=new RandomAccessFile(new File("d:/a.bin"),"rw"); try{ ra.setLength(1000*1024*1024); } finally{ ra.close(); } 另外一种方法 for (int i = 0; i < 1024; i++) { byte[] buffer

DiskZ 1645

用RandomAccessFile实现linux tail命令效果

linux tail -f  命令可以实现在终端跟踪打印文件输出,但因项目需要将此命令web化。 需要跟踪查看日志文件的打印,查

youling_lh的专栏 2402

RandomAccessFile任意访问文件

简介 其父类为Object,并没有继承字符流或字节流的任一个类 实现了DataInput、DataOutput接口,意味着这个类即可读又可写。 是io体系中功能...

海恩的博客 271

用RandomAccessFile来读写文件

用RandomAccessFile来读写文件

sanqima的专栏 2603
上一篇: Google搜索技巧终极收集 - 101个Google技巧
下一篇: 一篇非常好的linux学习笔记分享(转帖)
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值