Java高级应用(2)

1.File类:文件操作
File类:在java中File表示一个文件或者文件夹
1.1创建实例
File类没有无参的构造方法
Public File(String pathname)
通过将指定的路径名字字符串转换为抽象路径名来创建新的File实例。
1.2常用方法
1.2.1 createNewFile() throws IOException :boolean
当不存在具有此抽象路径名的文件的时候,或创建一个新的空文件
1.2.2 mkdir() / mkdirs():boolean
创建此抽象路径名的文件夹
带s:对抽象路径中的文件夹没有要求,多级文件夹没有的话会被一起创建
不带s:要求最后一级之前的所有文件夹都必须存在
1.2.3 delete() :boolean 和deleteOnExit():boolean
删除文件或者文件夹
1.2.4 exists() :boolean
判定抽象路径是否存在
1.2.5 isFile() :boolean
判定此抽象路径是否是文件
1.2.6 isDirectory() :boolean
判定此抽象路径是否是目录(文件夹)

2.流(I/O)
流:提供数据传输的通道。
2.1流的分类
2.1.1根据传输的数据类型分:字节流和字符流
字节:byte 字节流可以操作任意类型的文件。
字符: char 一个字符2个字节,字符流可以操作文件夹。
2.1.2根据传输方向划分:输入流和输出流
程序运行时,数据保存在内存中。流的方向的参照物是内存。
输入流:从硬盘文件到内存(程序)
内存《《《《《《《《《《《《《《《《文件(读)
输出流:从硬盘文件到内存(程序)
内存》》》》》》》》》》》》》》》》文件(写)
2.1.3根据流本身的功能划分:节点流和过滤流
节点流:直接从节点中取数据或保存数据的刘对象
过滤流:从节点流的基础上创建出来的扩展功能的流对象。
2.1.4流的父类
字节流:InputStream(输入) OutputStream(输出)
字符流:Reader(输入) Writer(输出)
2.2使用字节流操作文件
FileInputStream 文件输入流读取文件
FileOutoutStream 文件输出流写文件
2.2.1 读取文件:二进制方式处理
FileInputStream类:从文件系统中的某个文件中获取输入字节
Public FileInputStream(String name/File fileName) throws FileNotFoundException
通过打开一个实际的文件的链接来创建了一个FileInputStream,
通过文件的名称路径名(String name)或者 File对象的file制定。
Public int read() throws IOExecption
从输入流中读取一个字节
Public void close() throws IOException
关闭此文件输入流并释放与此流相关的所有的系统资源
2.2.2写入文件:二进制方式处理
FileOutputStream 类:用于将内存数据写入file或文件目录的输出流
Public FileOutputStream (String name) throws FileNotFoundException
创建一个具有制定了名称文件的文件输出流
Public void write(int num) throws IOExecption
将制定的字节写入输出流
Public void close() throws IOException
关闭此文件输入流并释放与此流相关的所有的系统资源
2.2.3使用缓存的方式优化
Public int read(byte[] b) throw IOException
从输入流中将b.length个字节的数据读入到byte数组中。
返回:读入缓冲区的字节总数。
Public void write(byte[] b) throw IOExection
将制定的byte的数组写入输出流
Public int read(byte[] b,int off ,int len) throw IOException
从输入流中将len个字节((len包含了偏移))的从偏移量off开始的数据读入到byte数组中。
返回:读入缓冲区的字节总数。
Public void write(byte[] b,int off ,int len) throw IOExection
将制定的byte的数组从便宜了off开始的len个字节(len包含了偏移)写入输出流
2.2.4向文件中追加内容的方式
FileOutputStream(String path, boolean append)
FileOutputStream(File file, boolean append)
2.2.5新的异常处理方式JDK7新特性
将需要关闭的资源在try后边的括号中定义,这些资源会自动关闭,无需在finally块中手动调用close()方法,也无需处理关闭资源时的异常。只要是实现java.io.Closeable接口的类,都可以放到try后边的括号中实例化,最后这些资源都会被自动关闭。
2.3过滤流
2.3.1DataxxStream
DataInputStream
readXxx();
DataOutputStream
writeXxx();
2.3.2过滤流的开发步骤
创建节点流
基于节点流创建过滤流
读/写数据
关闭外层流
2.3.3BufferedXXXStream缓冲过滤流
2.4序列化ObjectOutputStream
在Java中:化:过程
序列化:将对象保存到文件的过程
反序列化:从文件回到对象的过程
2.4.1序列化时使用的类:ObjectOutputStream
Public ObjectOutputStream(OutputStream out )throw IOExecption;
创建写入制定OutputStream 的ObjectOutputStream流
Public final writeObject(Object obj) throw IOExecption;
将制定的对象写入ObjectOutputStream
2.4.2序列化中的异常 NotSerializableException
引起该异常的原因:被序列化的对象的类没有实现Serializable接口
在这里插入图片描述

3字符流操作文本文件
3.1字符输入流
3.1.1FileReader类:用来读取字符文件的便捷类
Public FileReader(String fileName) throws FileNotFoundExecption
用指定的文件名称创建新的FileReader
Public int read() throws IOException
读取单个字符
3.1.2 BufferedReader类:从字符输入流中读取文本,缓冲各个字符实现字符、数组、行的高效读取。
Public bufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
Public String readLine() throws IOException
读取一个文本行
3.2 字符输出流
3.2.1FileWriter类:用来写入字符文件的便捷类
Public FileWriter(String fileName) throws IOExecption
用指定的文件名称创建新的FileWriter对象
Public void write() throws IOException
写入单个字符
3.2.2 BufferedWriter类:将文本写入字符输出流
Public bufferedWriter(Writer out)
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
Public void write(String str) throws IOException
写入字符串
Public void flush() throws IOException
刷新该流的缓冲区(强制将缓冲区中的内容写入文件)
Public void newLine() throws IOException

4 将字节流转换为字符流
4.1 OutputStreamWriter:字符流通向在字节流的桥梁
Public OutputStreamWriter(OutputSteam out)
创建使用默认字符编码的OutputStreamWriter
4.2 InputStreamReader:字节流通向在字符流的桥梁
Public InputStreamReader(InputSteam in)
创建使用默认字符编码的InputStreamReader

5.资源文件(properties)
资源文件就是一个文本文件,后缀是properties;
文件编写必须按照Map(key=value)方式
资源文件不支持中文,需要转码(编译器可以自动转换)
Java高级应用(2)_第1张图片
5.1Properties类
包:java.util.properties
Properties类要处理Map(key-value)格式的文件,所以他是Map接口的实现类。
5.2 加载资源文件内容到properties类中

你可能感兴趣的:(Java高级应用(2))