Java_008_IO和异常

I/O和流

  • I/O是Input和Output的缩写
  • 从读写设备,包括硬盘⽂文件,内存,键盘输⼊入,屏幕输出,⽹网络
  • 输⼊入输出 ”内容” (字节或⽂文本)
  • 流是对输⼊入输出设备的⼀一种抽象
  • 从流中读取内容,输出内容到流中
  • “Linux中⼀一起都是⽂文件”
  • 从程序的⻆角度, 就是对读写设备进⾏行行封装, ⽐比如:创建⼀一个对象, 然后调⽤用⽅方法 读取(输出)内容, 然后对象会更更新当前⽂文件的位置

标准输⼊入输出流

标准输出流

System.in;

字节流

  • InputStream
    • System.in
    • FileInputStream
  • OutputStream
    • System.out
    • FileOutputStream
    • BufferedInputStream和BufferedOutputStream
  • Stream⽤用于直接处理理”字节”

字符流

  • Reader
  • InputStreamReader
    • FileReader
    • BufferedReader
      bufferedReader.readLine();

字符流

  • Writer
  • OutputStreamWriter
    • FileWriter BufferedWriter
      bufferedWriter.write(String);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// System.out 标准输出流
PrintStream out = System.out;


System.out.println("hello java");

// 标准输入
InputStream in = System.in;

InputStreamReader stdReader = new InputStreamReader(System.in);


char[] buffer = new char[20];

int length = stdReader.read(buffer);

System.out.println(length);
/*
* 我们读取字符串的时候,需要用到其他的读取
* 把字节转换成字符串
*
* */


// 从一个文件读取内容,输出到另一个文件
FileInputStream input = new FileInputStream("res/input.txt");
FileOutputStream output = new FileOutputStream("res/output.txt");

InputStreamReader reader = new InputStreamReader(input,"UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(output,"UTF-8");

BufferedReader bufferedReader = new BufferedReader(reader);
PrintWriter printWriter = new PrintWriter(writer);

// String context = "";
// for(String line = bufferedReader.readLine() ;line != null;line = bufferedReader.readLine()){
// // 处理这一行
// context += line;
// }

String context2 = "";
String line = null;
while(( line = bufferedReader.readLine()) != null){
// 加 \n 是因为 拼接的时候去掉了
context2 += line + "\n";
}

reader.close();
input.close();

System.out.println(context2);
printWriter.print(context2);

printWriter.close();
output.close();

IOUtils

  • IOUtils是Apache开源项⽬目的⼀一个很⼴广泛使⽤用的IO⼯工具库
  • 主要提供更更⾼高抽象程度的IO访问⼯工具,⽅方便便写IO相关的代码
  • 常⽤用类
    • FileUtils
    • Charset
    • DirectoryWalker
    • copyUtils

异常

  • Java异常 (Exception) 是⽤用来在正常程序运⾏行行流程中遇到”异常”情况, 跳出正 常运⾏行行流程, 进⾏行行出错处理理的⼀一种机制
  • 异常类: new Exception();
  • 异常捕捉语句句:
  • try {正常代码;} catch (Exception e) {处理理异常代码;}

异常 和 NULL

  • Null是⼀一个值, 可以赋值给所有类型的变量量
  • 表达的是”空”, 指这个变量量不不指向任何对象
  • Integer x = null; Object object = null;
  • 当调⽤用 x.xxx() 或 object.test() 时候, 会返回NullpointerException;
  • 这是⾮非常常⻅见的⼀一种错误, 所以使⽤用⼀一个变量量的时候, 需要检查这个变量量是否
    指向null, 以免出错