1. 简单的使用方式

java.util.Scanner (读)

Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();

java.io.PrintWriter  (写)

Writer writer = new PrintWriter("abc.txt");

   

Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式  (注意命名后缀)

Java Input/Output

 

2. 二进制IO

可序列化接口Serializable

可以写入输出流中的对象成为可序列化的,可序列化对象的类必须实现Serizlizable接口。

Serialzable接口是一种标记性接口,因为它没有方法,所以不需要在类中为实现Serializable接口增加额外的代码。实现这个接口可以启动Java的序列化机制,自动你完成存储对象和数组的过程。

关键字transient告诉Java虚拟机将对象写入对象流时忽略这些数据域。

 

序列化数组

只有数组中的元素都是可序列化的,这个数组才是可序列化的。一个完整的数组可以用writeObject方法存入文件,随后用readObject方法恢复。

示例:

 1 package com.artificerpi.demo;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.ObjectInputStream;
 7 import java.io.ObjectOutputStream;
 8 import java.io.Serializable;
 9 
10 public class Hello {
11     public static void main(String[] args) throws ClassNotFoundException, IOException {
12         int[] numbers = { 1, 2, 3, 4, 5 };
13         String[] strings = { "John", "Jim", "Jake" };
14         Programmer programmer = new Programmer("artificerpi", 17);
15         ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("array.dat", false)); // no
16                                                                                                         // append
17 
18         output.writeObject(numbers);
19         output.writeObject(strings);
20         output.writeObject(programmer);
21 
22         output.close();
23 
24         ObjectInputStream input = new ObjectInputStream(new FileInputStream("array.dat"));
25 
26         int[] nums = (int[]) input.readObject();
27         String[] strs = (String[]) input.readObject();
28         Programmer programmer2 = (Programmer) input.readObject();
29 
30         for (int a : nums) {
31             System.out.print(a);
32         }
33         System.out.println();
34 
35         for (String s : strs) {
36             System.out.print(s);
37         }
38 
39         System.out.println(programmer2.name + programmer2.age);
40 
41     }
42 }
43 
44 class Programmer implements Serializable {
45     String name;
46     transient int age;
47 
48     public Programmer(String name, int age) {
49         this.name = name;
50         this.age = age;
51     }
52 
53 }
View Code

相关文章: