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()返回一个字符串数组,由路径名组成
list(FilenameFilter filter)与上一个方法类似。路径名需满足过滤条件
listFiles()返回一个File数组,由File实例组成
listFiles(FilenameFilter 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 支持对文件进行非顺序的、随机的访问