《英雄連》新作或於明日公佈 官方直播已開啟倒計時
阿新 • • 發佈:2021-07-13
今天系統的學習了 Java IO 這部分的知識,把一些之前沒有用過的,或者忘記的方法和類重新學了一下。怕自己睡一覺把今天學的忘完了QaQ。所以,不得已寫一下部落格
IO概述
package com.coder.com; import java.io.*; import java.nio.charset.StandardCharsets; public class Demo01 { /** * IO流概述 * 可以將資料傳輸的操作看成一種資料的流動,按照流動的方向可以分為輸入Input和輸出Output * Java中的IO操作主要指的是 java.io包下的一些常用類的使用, 通過這些類可以對資料進行讀取(輸入流)和寫出(輸出流) * <p> * IO流分類: * 按照方向: * - 輸入流 * - 輸出流 * 按照資料型別: * - 位元組流 * -輸入 InputStream * -輸出 OutputStream * - 字元流 * -輸入 Reader * -輸出 Writer * 一切皆位元組: * 計算機中的任何資料都是以二進位制形式儲存的 * 傳輸時也是以二進位制的形式傳輸的 *</p> * @param args */ public static void main(String[] args) throws IOException { //位元組流 OutputStream os = new FileOutputStream("E:\\a.txt", true); os.write(65); byte[] bytes = {66, 67, 68}; os.write(bytes, 1, 2); os.write("你好,世界".getBytes(StandardCharsets.UTF_8)); os.close(); InputStream is = new FileInputStream("E:\\a.txt"); bytes = new byte[1024]; int len = is.read(bytes); System.out.println("new String(bytes, 0, len) = " + new String(bytes, 0, len)); is.close(); } }
位元組輸出流
方法:
- void write(int b)
- void write(byte b[])
- void write(byte b[], int off, int len)
- FileOutputStream
- void flush()
- void close()
常用子類:
- FileOutputStream(File file, boolean append)
- BufferedOutputStream(OutputStream out)
- ObjectOutputStream(OutputStream out)
- PrintStream(boolean autoFlush, OutputStream out)
字元流
package com.coder.com; import java.io.*; public class Demo02 { public static void main(String[] args) throws IOException { Writer writer = new FileWriter("E:\\b.txt"); writer.write("你好,世界,"); writer.append("你好,Java").append("你好,Golang"); writer.close(); Reader reader = new FileReader("E:\\b.txt"); char[] chars = new char[1024]; int len = reader.read(chars); String s = new String(chars, 0, len); System.out.println("content = " + s); reader.close(); } }
轉換流
package com.coder.com;
import java.io.*;
public class Demo03 {
/**
* 轉換流
* 位元組流 裝飾為 字元流 :使用裝飾著設計模式
* @param args
*/
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("E:\\a.txt");
//param1 要轉換的位元組流
//param2 指定編碼名稱
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
char[] buffs = new char[1024];
int len = isr.read(buffs);
for (int i = 0; i < len; i++) {
System.out.print(buffs[i]);
}
isr.close();
fis.close();
}
}
列印流
package com.coder.com;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
public class Demo04 {
/**
* 列印流
* @param args
*/
public static void main(String[] args) throws IOException {
PrintStream ps = new PrintStream("E:\\c.txt");
ps.println("你好,世界");
ps.println("你好,Java");
ps.println("你好, Golang");
ps.close();
PrintWriter pw = new PrintWriter("E:\\c.txt");
pw.println("你好Vue");
pw.println("你好SpringBoot");
pw.close();
}
}
Properties
package com.coder.com;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class Demo05 {
public static void main(String[] args) throws IOException {
// Properties properties = new Properties();
// properties.setProperty("name", "王令");
// properties.setProperty("age", "20");
// properties.setProperty("gender", "男");
// properties.store(new FileWriter("E:\\d.properties"), "個人資訊");
Properties properties = new Properties();
properties.load(new FileReader("E:\\d.properties"));
System.out.println("name = " + properties.getProperty("name"));
System.out.println("age = " + properties.getProperty("age"));
System.out.println("gender = " + properties.getProperty("gender"));
}
}
序列化 反 序列化
package com.coder.com;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Demo06 {
/**
* 序列化 反 序列化
*
* @param args
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// Person wl = new Person("王令", 21, "男");
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\person"));
// oos.writeObject(wl);
// oos.close();
// ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\person"));
// Person wl = (Person) ois.readObject();
// System.out.println("wl = " + wl);
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\list_person"));
// List<Person> people = new ArrayList<>();
// people.add(new Person("張三", 20, "男"));
// people.add(new Person("李四", 21, "女"));
// people.add(new Person("王五", 22, "男"));
// oos.writeObject(people);
// oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\list_person"));
List<Person> people = (List<Person>) ois.readObject();
for (Person person : people) {
System.out.println(person);
}
}
}
class Person implements Serializable {
private String name;
private Integer age;
private String gender;
public Person() {
}
public Person(String name, Integer age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
掙錢養媳婦兒^.^