1、不应该让方法来终止程序,应该由调用者决定是否终止程序,但是又要尽量使用if来进行简单测试而不是异常处理来测试
2、异常是对象,而对象都采用类来定义,异常的根类是java.lang.Throwable
3、异常类主要分为三种类型:系统错误(JAVA虚拟机抛出,免检异常)、异常(要被被捕获和处理)、运行时错误(程序设计错误,免检异常)
4、如果方法类没有在父类中声明异常,那么就不能在子类中对其进行继承来声明异常
5、在catch块中异常被指定的顺序非常重要,父类应在子类的下面
6、使用finally子句时可以省略catch块,finally块之前有return语句,finally块还是会被执行
7、和其他异常一起抛出一个异常,称为链式异常,异常没有被当前方法捕获,传递给调用者,这个过程不断重复到异常被捕获或传递给main方法
8、File类包含许多获取文件属性的方法,以及重命名和删除文件目录的方法,无论文件是否存在都可以创建这个实例
9、文本可使用PrintWriter写数据:
Public class WriteData{
public static void main(String[] args) throws IOException {
java.io.File file=new java.io.File("xx.txt");
if(file.exits()){
System.exit(1);//文件存在则退出
}
java.io.PrintWriter output=new java.io.PrintWriter(file);//创建文件
output.print("输入文件写入的内容1");
...
output.print("输入文件写入的内容n");
out.close();
}
}
10、try(声明创建资源){使用资源处理文件;}即try-with-resources可以自动关闭资源
11、文本可使用Scanner读数据:
...
java.io.File file=new java.io.File("xx.txt");
Scanner input=new Scanner(file);
while(input.hasNext()){
String xx=input.next();
...
int xx=input.nextInt();
}
input.close();
...
12、二进制I/O不涉及编码解码,效率比文本I/O更加高效,本质上来说,所有文件都是二进制文件
13、FileInputStream和FileOutputStream用于从文件读取和输入字节,不同于File的是,如果试图为不存在的文件创建FileInputStream实例,将会发生IO异常,使用如:
...
try(FileOutputStream output=new FileOutputStream("xx.dat");){
for(int i=1;i<=10;i++)
output.write(i);//写入1-10到xx.dat,不存在则自动创建,且将自动关闭资源
}
try(FileInputStream input=new FileInputStream("xx.dat")){
int value;
while((value=input.read())!=-1)//读取xx.dat里面的数据,也将在结束以后自动关闭资源
System.out.print(value+"");
}
...
14、FilterInputStream和FilterOutputStream是过滤数据的基类,用于处理整数值、双精度值和字符串
15、DataInputStream和DataOutputstream处理基本数据类型和字符串,是上一条的拓展类
16、EOFException异常检查是否已经读取到了文件末尾
17、BufferedInputStream和BufferedOutputStream可以通过减少读写次数来提高输入输出效率,缓存区默认512个字节,100M以上文件读写建议使用
18、对象I/O--ObjectInputStream和ObjectOutputStream用于读写可序列化的对象,实现基本数据类型、字符串和对象的输入输出
19、提高性能可以向数据流中写入多个对象或基本数据类型,如:
ObjectOutputStream output=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("xx.dat")));
20、可序列化对象的类必须实现Serializable接口,内在机制自动完成写对象的过程,数据域加上transient关键字,反序列化实在ObjectInputStream类中实现
21、随机访问文件通过RandomAccessFile类,可设置只读和读写两者模式(r,rw;在构造函数中完成)