javaIO

本文深入探讨Java I/O流与File类的基本概念、构造方法、路径及分隔符、常用方法以及如何实现输入输出操作。重点介绍了File类在文件路径管理、文件和目录操作、文件读写等方面的应用,同时提供了关于字节流、字符流、缓冲流和数据流的相关知识,以及如何使用RandomAccessFile进行随机访问文件。通过实例解析,帮助开发者理解并熟练运用Java的I/O流与File类进行文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File

File类的实例表示一个文档或者目录

File 构造方法:

File(String parent,String child)

File(File parent,String child)

File(URI uri)

File(String pathname)

构造一个file实例并不是创建这个目录或者文件,而是该路径的一个抽象,它可能真实存在也可能不存在

File类属于java.io.Flie

 

 

路径及分隔符

不同风操作系统对文件路径的设定各不相同,

Windows   C:\\workspace\\ch10\\

Linux   /home/workspace/ch10

 

File 类中的字段摘要

File.pathSeparator(Windows上为; Linux上为:)

File.pathSeparatorChar(Windows上为;Linux上为:)

File.separator(Windows上为\ Linux上为/)

File.separatorChar(Windows上为\ Linux上为/)

File类常用方法

1.          f.getName():  返回文件名 temp.dat

2.          f.getParent() 返回文件所在目录名 data

3.          f.getPath()   返回文件路径   dada\temp.data

4.          f.getAbsolutePath()  返回绝对路径

5.          f.exists()    文件是否存在

6.          f.canWrite(),  f.canRead()  文件是否可读可写

7.          f.isFile() ,f.isDirectory()  是否为文件或者目录

8.          f.lastModified() ,f.length(), f.delete(): 文件的最后修改日期,长度;删除文件

9.          f.mkdir() ,f.list()  创建一个目录;列出目录下所有的文件

 

 

file 类的list()和listFile()

list()返回一个字符串数组,由路径名组成

listFilenameFilter filter)与上一个方法类似。路径名需满足过滤条件

listFiles()返回一个File数组,由File实例组成

listFilesFilenameFilter filter)与上一个方法类似吗,需要满足过滤条件

 

 

输入/输出流

所有输入流都有一个源,有读的行为,所有输出流都有一个目标,有写的行为。输入是指由外界的文件中读入到程序中,输出是指由程序中写入到外界的文件中

 

字节流

所有字节流都继承自InputStream, OutputStream

由有很多的字节流类,我们以文件的IO字节流作为示范:FileInputStream   FileOutputStream

当流不再被需要的时候,记得调用其close方法,防止资源耗尽

CopyBytes看起来是一个普通程序,但是它使用的是一种低级的IO,如果针对的内容由字符组成,最好使用字符流,字节流只适用于最原始的IO

 

字符流

Java平台使用Unicode来存储字符,字符流自动在本地字符集和Unicode这种国际通用的格式之间转换

所有的字符流类都继承自Reader Writer

文件读写:FileReader  FileWriter

有时候我们需要将字节流转换为字符流,使用InputStreamReader  OutputStreamWriter ,实际上使用了适配器模式,意图为:将一个类的接口转换成客户希望的另一个接口,该接口使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作

 

Buffered Streams 缓冲IO

程序中使用“包装”的方法将畏寒冲IO转换成缓冲IO。无缓冲流对象被传递给一个缓冲流类的构造函数

 

InputStream = new BufferedReader(new  FileReader(“hha.txt”));

outputStream = new BufferedWriter(new  Filewriter(“hha.txt”));

 

刷新缓冲流

一些缓冲输出类支持autoflush,通过一个可勾选的构造函数的参数来指定,要手动刷新流,调用flush()方法

 

数据流

基本类型的数据+ String  所有的数据流都实现了DataInput/DataOutput接口

 

对象流(Object Streams

对象流支持对象的读写,只要实现了Serializable 接口,对象流就可以读写它的实例

对象流类  ObjectInputStream / ObjectOutputStream

 

读写复合对象

许多对象包含其他对象的引用,如果readObject 重组一个对象,它必须具有能够重建原始对象引用,一个流可以只包含对象的一个拷贝,但它可以包含任意数量对它的引用,因此如果你明确的写入对象流两次,其实只是将引用写了两次

 

 

随机访问文件

RadomAccessFile 支持对文件进行非顺序的、随机的访问

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值