在前面的学习完成之后,我们已经可以实现许多操作了,本周呢,我们将对类的认识进一步加深,此外再介绍一下通过程序对文件的基本操作,即俗称的IO流。
目录
Java异常类简介
由于异常类的使用比较少,所以仅作简单介绍。
我们在编程的时候难免会出现错误,常见的错误有除0溢出、数组越界、未找到文件等。然而并不是错误都是致命的,致命错便是error,非致命错便是exception,也就是所谓的异常。在idea中便是通过下图的图标来表示的。
实际上,Java中存在Exception类和Error类,他们都在java.long包里面,且是Throwable类的子类。不过通常只关心Exception类和它的子类。下面给出错误类和异常类的层次结构和常见异常类的列表。
编译器会帮我们检查出一部分错误,检查不出的错误就值得引起我们重视,其中有一部分便可通过异常类发现,由于使用频率较低,所以感兴趣的可以自行了解。
Java集合类简介
这里的集合和数学中一样,是一系列对象的聚集,代表一组数据对象的一个对象,每个对象也称为集合的元素,在Java中集合也可叫作容器。
Java中定义了一套完整的集合框架,具体包括一组接口、抽象类和具体实现类。不过这些接口和类数目众多,彼此之间的关系也很复杂。
Collection是Java 集合框架的跟接口,它定义了各种集合的最大共性。主要方法如下图。
其余的,感兴趣的自行学习吧。
Java输入输出流与读写操作
I/O流简介
输入输出是计算机系统和外界交换信息的途径,在Java中通过“流”实现。在C++中同样有IO流,不过C++中的IO流与Java中不太一样。下面仅介绍Java中的I/O流。Java中的I/O体系大致如下图。
java.io包中定义了字节流的输入输出和字符流的输入输出4个抽象类,即上图所提到的InputStream(输入字节流类)、OutputStream(输出字节流类)、Reader(输入字符流类)、Writer(输出字符流类)。
接下来先对这四个类和各自子类的关系以及常用到的方法进行列举,再具体说明。
1.InputStream(输入字节流类)
2.OutputStream(输出字节流类)
3.Reader(输入字符流类)
4.Writer(输出字符流类)
具体使用
根据前面的知识,抽象类的实例化必须通过他的子类来实现。此外,要在程序中实现对文件的编辑,就必须给出文件的路径,这里就需要File类(文件类)。
File类
File类有3种常用的构造方法
(1)File(String pathname) //pathname是文件路径和文件名
(2)File(String dir,String filename) //dir是父路径,filename是文件名
(3)File(File dir,String filename) //dir是父路径File对象,filename是文件名
import java.io.File;
public class IO {
public static void main(String[] args) {
String pathname = "D:\\编程及相关\\java\\java-1\\abc.txt";
File f1 = new File(pathname);
System.out.println("文件是否存在" + f1.exists());
System.out.println("文件名称:" + f1.getName());
System.out.println("文件的相对路径:" + f1.getPath());
System.out.println("文件的绝对路径:" + f1.getAbsolutePath());
System.out.println("文件可读性:" + f1.canRead());
System.out.println("文件可写性:" + f1.canWrite());
System.out.println("文件大小:" + f1.length());
}
}
上面所用到的方法是File中的常用方法,可自行查阅。
上面程序的运行结果如下
文件是否存在true
文件名称:abc.txt
文件的相对路径:D:\编程及相关\java\java-1\abc.txt
文件的绝对路径:D:\编程及相关\java\java-1\abc.txt
文件可读性:true
文件可写性:true
文件大小:0
输入输出
在键盘输入、显示器显示信息,通常称为标准输入输出或者控制台输入输出。Java 语言在键盘输入、显示器显示信息,通常称为标准输入输出或者控制台输入输出.Java语言专门提供了Java.lang.System类中的对象实现标准输入和输出。
(1) System.out: 标准输出流对象,默认为显示器,它是PrintStream类的对象。
(2) System.in: 标准输入流对象,默认为键盘,它是InputStream 类的对象。
(3) System.er: 标准错误输出流对象,默认为显示器,是PrintStream类的对象。
在前面,我们通过Scanner类来实现输入,在这里也可以通过Scanner来从文件中获取数据。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ScannerFileTest {
public static void main(String[] args) throws FileNotFoundException {
String s1,s2,s3,s4;
File f = new File("D:\\编程及相关\\java\\java-1\\abc.txt");
Scanner sc = new Scanner(f);
s1 = sc.next();
s2 = sc.next();
s3 = sc.next();
s4 = sc.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
这里s1到s4分别以字符串的形式保存了文件中第一行到第四行的内容。这里要保证文件非空,不然会无法运行。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class ScannerFileTest {
public static void main(String[] args) throws IOException {
String s1,s2,s3,s4,xm;
int c1,c2,c3,zcj;
File f = new File("D:\\编程及相关\\java\\java-1\\abc.txt");
Scanner sc = new Scanner(f);
s1 = sc.next();
s2 = sc.next();
s3 = sc.next();
s4 = sc.next();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
String dir = "D:\\编程及相关\\java\\java-1";
String fileName = "def.txt";
File f1 = new File(dir,fileName);
boolean b1 = f1.createNewFile();
PrintWriter pw1 = new PrintWriter(f1);
pw1.println(s1);
pw1.println(s2);
pw1.println(s3);
pw1.println(s4);
pw1.close();
PrintWriter pw2 = new PrintWriter(System.out);
pw2.println("---------");
pw2.println(s1);
pw2.println(s2);
pw2.println(s3);
pw2.println(s4);
pw2.println("---------");
pw2.close();
}
}
这里通过PrintWriter类分别实现了写入文件和系统输出。
通过这个,基本对文件的读写就可以实现,不过对文件的读写当然不止这个,还有其他,那就接下来再慢慢学吧,我们下周再见。