知识点1:IO流
字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
文件流:FileInputStream,FileReader,FileOutputStream,FileWriter
缓冲流:BufferedInputStream,BufferedReader(String readLine()),BufferedOutputStream,BufferedWriter(void newLine())
对象序列化 : 把对象的GC中的数据写入到输出流....
反序列化 : 把输入流中的二进制数据还原成对象..
对象的获取 :
1) new
2) 工厂方法
3) 反序列化
4) 反射
常用的流 :
FileInputStream , FileOutputStream => 处理二进制文件
BufferedReader, BufferedWriter => 处理文本
InputStreamReader, OutputStreamWriter => 处理文本
ObjectInputStream, ObjectOutputStream => 处理地二进制
class Student implements Serializable {
public static int no = 200;
private int id;
private String name;
private int grade;
private transient double score;
public Student() {}
public Student(int id, String name, int grade, double score) {
this.id = id;
this.name = name;
this.grade = grade;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", grade=" + grade +
", score=" + score +
'}';
}
}
public class IOTest {
public static void main(String[] args) {
System.out.println("hello");
System.err.println("world");
InputStream is = System.in;
InputStreamReader isr = null;
BufferedReader bufferedReader = null;
try {
isr = new InputStreamReader(is);
bufferedReader = new BufferedReader(isr);
String line;
while ((line = bufferedReader.readLine()) != null) {
if (line.equals("exit")) {
break;
}
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void testFileWriter() {
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bufferedWriter = null;
try {
fos = new FileOutputStream(new File("一个文件.txt"), true);
osw = new OutputStreamWriter(fos, "gbk");
bufferedWriter = new BufferedWriter(osw);
bufferedWriter.write("我是一个字符串1");
bufferedWriter.newLine();
bufferedWriter.write("我是一个字符串2");
bufferedWriter.newLine();
bufferedWriter.write("我是一个字符串3");
bufferedWriter.newLine();
bufferedWriter.write("我是一个字符串4");
bufferedWriter.newLine();
bufferedWriter.write("我是一个字符串5");
bufferedWriter.newLine();
bufferedWriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
@Test
public void testFileReader() {
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader bufferedReader = null;
try {
fis = new FileInputStream("HashMap2.java");
isr = new InputStreamReader(fis, "gbk");
bufferedReader = new BufferedReader(isr);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void test6() {
FileInputStream fis = null;
BufferedInputStream bis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream("对象序列化");
bis = new BufferedInputStream(fis);
ois = new ObjectInputStream(bis);
Object o = ois.readObject();
System.out.println(o);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void test5() {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("对象序列化");
bos = new BufferedOutputStream(fos);
oos = new ObjectOutputStream(bos);
Student.no = 10000;
Student s1 = new Student(1, "小明", 5, 80);
Student s2 = new Student(2, "小我", 4, 50);
Student s3 = new Student(3, "小刚", 2, 30);
Student[] arr = {s1, s2, s3};
Set<Student> hashSet = new HashSet();
hashSet.add(s1);
hashSet.add(s2);
hashSet.add(s3);
oos.writeObject(hashSet);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void test4() throws UnsupportedEncodingException {
System.out.println((int)'我');
System.out.println(0x6211);
System.out.println((char)0x548C);
System.out.println(0xCED2);
String string = "abc我和你zzz";
byte[] bytes1 = string.getBytes("utf8");
for (int i = 0; i < bytes1.length; i++) {
System.out.print(Integer.toHexString(bytes1[i]) + " ");
}
System.out.println();
byte[] bytes2 = string.getBytes("gbk");
for (int i = 0; i < bytes2.length; i++) {
System.out.print(Integer.toHexString(bytes2[i]) + " ");
}
System.out.println();
String string1 = new String(bytes1, "utf8");
System.out.println(string1);
String string2 = new String(bytes2, "gbk");
System.out.println(string2);
}
@Test
public void exer2() {
FileInputStream fis = null;
BufferedInputStream bis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream("50个随机数");
bis = new BufferedInputStream(fis);
ois = new ObjectInputStream(bis);
for (int i = 0; i < 50; i++) {
System.out.println(ois.readInt());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void exer1() {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("50个随机数");
bos = new BufferedOutputStream(fos);
oos = new ObjectOutputStream(bos);
for (int i = 0; i < 50; i++) {
oos.writeInt((int)(Math.random() * 100));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void test2() {
FileInputStream fis = null;
BufferedInputStream bis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream("二进制文件");
bis = new BufferedInputStream(fis);
ois = new ObjectInputStream(bis);
System.out.println(ois.readInt());
System.out.println(ois.readBoolean());
System.out.println(ois.readBoolean());
System.out.println(ois.readLong());
System.out.println(ois.readDouble());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ois != null) {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void test1() {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("二进制文件");
bos = new BufferedOutputStream(fos);
oos = new ObjectOutputStream(bos);
oos.writeInt(20);
oos.writeBoolean(true);
oos.writeBoolean(false);
oos.writeLong(30);
oos.writeDouble(3.14);
oos.writeUTF("abc我和你zzz");
oos.writeChars("abc我和你zzz");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (oos != null) {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}