JAVA_基础IO流随机存取文件流(四)
随机存取文件流
RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类。并 且它实现了DataInput、DataOutput这两个接口,也就意味着这个类可以作为输入流,也可以作为输出流。
构造器:public RandomAccessFile(File file, String mode) 、public RandomAccessFile(String name, String mode)
创建RandomAccessFile 类实例需要指定一个mode参数,该参数指定RandomAccessFile的访问模式:
r:以只读方式打开
rw:打开以便读取和写入
rwd:打开以便读取和写入;同步文件内容的更新
rws:打开以便读取和写入;同步文件内容和元数据的更新
public void test1() {
RandomAccessFile randomAccessFile1 = null;
RandomAccessFile randomAccessFile2 = null;
try {
randomAccessFile1 = new RandomAccessFile(new File("image.png"),"r");
randomAccessFile2 = new RandomAccessFile(new File("image1.png"),"rw");
byte[] buffer = new byte[1024];
int len;
while((len = randomAccessFile1.read(buffer)) != -1) {
randomAccessFile2.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomAccessFile2 != null) {
try {
randomAccessFile2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (randomAccessFile1 != null) {
try {
randomAccessFile1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
如果RandomAccessFile作为输入流出现,写出到的文件不存在,则自动创建。如果文件存在,则对文本内容从头覆盖。
// hello.txt内容: 123456
public void test2() {
RandomAccessFile rw = null;
try {
rw = new RandomAccessFile(new File("hello.txt"), "rw");
rw.write("00".getBytes());// 003456
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (rw != null) rw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
RandomAccessFile 类也可以跳转文件任意位置进行读写。
void seek(long pos):将文件记录指针定位到 pos 位置。
//hello.txt内容:123456
public void test3() {
RandomAccessFile rw = null;
try {
rw = new RandomAccessFile(new File("hello.txt"), "rw");
rw.seek(3);// 将指针调到角标为3的位置
rw.write("00".getBytes());// 123006
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (rw != null) rw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
JAVA_基础IO流随机存取文件流(四)的更多相关文章
- JAVA_基础IO流对象流(三)
处理流:对象流 ObjectInputStream和OjbectOutputSteam用于存储和读取基本数据类型数据或对象的处理流.可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来. ...
- Java中常用IO流之文件流的基本使用姿势
所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流. ...
- 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作
一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...
- Java IO流之【缓冲流和文件流复制文件对比】
与文件流相比,缓冲流复制文件更快 代码: package Homework; import java.io.BufferedOutputStream; import java.io.File; imp ...
- Java IO流之文件流
一.文件流分类 二.FileInputStream 三.FileOutputStream 四.FileReader 五.FileWriter 六.文件流应用 1,复制或剪切文件 2,读取文件信息 应用 ...
- .NET中的IO操作之文件流
读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不 ...
- C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流 FileStream 可读可写 大文件 释放 StreamReader 读取 释放 StreamWriter 写入 释放 using 中释放 File 可读可写 小文件 操作文 ...
- .NET中的IO操作之文件流(一)
读操作 //1.创建文件流 FileStream fsRead =new FileStream("1.txt",FileMode.Open); //2.创建缓冲区,正常情况下,是不 ...
- C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)
一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...
随机推荐
- PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QPlainTextEdit是用于纯文本的一个高级文档编辑器 ...
- PyQt(Python+Qt)学习随笔:自定义信号在emit发射信号时报错:AttributeError: object has no attribute
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 如果使用自定义信号,一定要记得信号是类变量,必须在类中定义,不能在实例 ...
- 关于将Linux中默认的OpenJDK替换为JDK的方法
首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...
- CF1439C Greedy Shopping
题解 尝试做一下,感觉是每次取一段前缀和,这样就相当于让我们证明在 \(a_i\le 10^{12}\) 时,不可能构造出隔一个取一个的情况(\(n=10^5\)). a[i]: 1, 2, 3, 5 ...
- Codeforces Edu Round 55 A-E
A. Vasya and Book 简单的取余运用. #include <iostream> #include <cstdio> #include <limits.h&g ...
- sql语句执行次序
from→on→join→where→group by→having→select→distinct→order by→limit
- WebService-问题
1.引用问题 在用C#对接webservice的时候,常用的方法是下载vs中引用webservice的地址.然后,new对应的client就可以使用了.但在,实际应用中往往会遇到webservice访 ...
- 学好Spark/Kafka必须要掌握的Scala技术点(一)变量、表达式、循环、Option、方法和函数,数组、映射、元组、集合
前言 Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作.正如之前所介绍,Spark是用Scala语言编写的,Kafka server端 ...
- router.push query 路由 跳转 传参使用
this.$router.push({path:'/shop',query:{ goods_name:goods_name, goods_price:goods_price, uid:goods_pr ...
- JavaSE10-继承&super&this&抽象类
1.继承 1.1 概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可. 其中,多个类可以称为子类,单独那一个类称为父类.超类(s ...