JAVA基础复习(四)异常和IO

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;在构造函数中完成)
 

猜你喜欢

转载自blog.csdn.net/qq_37575994/article/details/83449106
今日推荐