Java IO ---学习笔记(文件操作与随机访问文件)
来源:互联网 发布:基于粒子群算法的论文 编辑:程序博客网 时间:2024/06/01 23:09
java.io 定义的大多数类都是流式操作,但 File 类不是。它直接处理文件和文件系统。File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File 对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。Java 中的目录当成 File 对待,它具有附加的属性——一个可以被 list( )方法检测的文件名列表。
先看一看 File 的构造函数:
//根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 File(File parent, String child) //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例 File(String pathname) // 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例File(String parent, String child) //通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例File(URI uri)
例如:
//一个目录路径参数File f1 = new File("/Users/mumutongxue/");//对象有两个参数——路径和文件名File f2 = new File("/Users/mumutongxue/","a.bat");//指向f1文件的路径及文件名File f3 = new File(f1,"a.bat");
看一看相关的代码吧:
import java.io.File;import java.io.IOException;public class FileDemo { public static void main(String[] args){ //构造函数File(String pathname) File f1 =new File("/Users/mumutongxue/1.txt"); //File(String parent,String child) File f2 =new File("/Users/mumutongxue","2.txt"); //separator 跨平台分隔符 File f3 =new File("/Users"+File.separator+"mumutongxue"); File f4 =new File(f3,"3.txt"); try { System.out.println(f1); //当文件存在时返回 false;不存在时返回 true System.out.println(f2.createNewFile()); //当文件不存在时返回 false System.out.println(f3.delete()); }catch(IOException e) { e.printStackTrace(); } //列出磁盘下的文件和文件夹 File[] files =File.listRoots(); for(File file:files){ System.out.println(file); if(file.length()>0){ String[] filenames =file.list(); for(String filename:filenames){ System.out.println(filename); } } } }}
二、随机访问文件
对于 FileInputStream/FileOutputStream、FileReader/FileWriter 来说,它们的实例都是顺序访问流,即只能进行顺序读/写。而类 RandomAccessFile 则允许文件内容同时完成读和写操作,它直接继承 object,并且同时实现了接口 DataInput 和 DataOutput,提供了支持随机文件操作的方法:
- readXXX()或者 writeXXX():如 ReadInt(),ReadLine(),WriteChar(),WriteDouble()等
- int skipBytes(int n):将指针向下移动若干字节
- length():返回文件长度
- long getFilePointer():返回指针当前位置
- void seek(long pos):将指针调用所需位置
在生成一个随机文件对象时,除了要指明文件对象和文件名之外,还需要指明访问文件的模式。
我们来看看 RandomAccessFile 的构造函数:
RandomAccessFile(File file,String mode)RandomAccessFile(String name,String mode)
mode 的取值:
r
只读,任何写操作都讲抛出 IOExceptionrw
读写,文件不存在时会创建该文件,文件存在是,原文件内容不变,通过写操作改变文件内容。rws
同步读写,等同于读写,但是任何写操作的内容都被直接写入物理文件,包括文件内容和文件属性rwd
数据同步读写,等同于读写,但任何内容写操作都直接写到物理文件,但对文件属性内容的修改不是这样
看看代码吧:
mport java.io.IOException;import java.io.RandomAccessFile;public class FileDemo { public static void main(String[] args){ int data_arr[] = {12, 32, 43, 45, 1, 5}; try { RandomAccessFile randf=new RandomAccessFile("temp.dat","rw"); for(int i = 0; i < data_arr.length; i++){ randf.writeInt(data_arr[i]); } for(int i = data_arr.length-1 ; i >= 0; i--){ //int 数据占4个字节 randf.seek(i * 4L); System.out.println(randf.readInt()); } randf.close(); }catch(IOException e){ System.out.println("File access error" + e); } }}
在 java 中有数据传输的地方都用到 I/O 流(通常是文件、网络、内存和标准输入输出等)
InputStream 和 OutputStream 是所有字节流的祖先(只有 RandAccessFile 类是一个列外),read 和 write 是它们最基本的方法,读写单位是字节
Reader 和 Writer 是所有字符流的祖先,read 和 write 是它们最基本的方法,读写单位是字符。
在众多的流对象中,并不是每一种都单独使用,其中过滤流的子类在数据送出去之前做必要的处理。
- Java IO ---学习笔记(文件操作与随机访问文件)
- Java-文件操作与随机访问文件
- 文件操作与随机访问文件
- Java IO流(三)-- 文件的处理与随机访问
- Java I/O 学习笔记(5) 随机访问文件
- 【Java学习笔记】27:文件的随机访问&对象流
- java IO操作与字节流(二)文件的随机读取
- [学习笔记]Java文件IO操作------实现对文件的读取与写入
- io流操作之随机访问文件流代码
- java随机访问文件
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- [Java核心API]IO流--随机访问文件RandomAccessFile
- Java IO详解——随机访问文件流
- Java学习笔记(五):文件IO
- Java IO ---学习笔记(文件流)
- Java IO ---学习笔记(文件流)
- Java IO ---学习笔记(缓冲流)
- Java IO ---学习笔记(数据流)
- Java IO ---学习笔记(标准流、内存读写流、顺序输入流)
- Java IO ---学习笔记(字符流)
- Java IO ---学习笔记(文件操作与随机访问文件)
- 回流(reflow)和重绘(repaint)
- Java ---学习笔记(泛型)
- Tomcat相关知识点总结(jsp)
- wamp phpMyAdmin error #1045
- Vue, App与我(十一)
- Spring Mvc 实例
- 某公司(技术面)
- python3 OpenCV 开发环境搭建