- 代码写到的缓冲流和文件流比较重要
- 别的那些很不常用 有个印象就可以
- 用到去API里查
- 或者私信问我
package com.uncle.test_io.testbuffered;
/**
* 文件流
* 低级
* 字节型 FileInputStream FileOutputStream
* 字符型 FileReader FileWriter 字符集65279
* 缓冲
* 字节型 BufferedInputStream BufferedOutputStream
* 字符型 BufferedReader BufferedWriter
* 数组流
* byte数组 ByteArrayInputStream ByteArrayOutputStream
* char数组 CharArrayReader CharArrayWriter
* 数据流 DataInputStream DataOutputStream
* 字符串流 StringReader StringWriter
* 对象流 ObjectInputStream ObjectOutputStream
* 转换流
* 打印流
* InputSreamReader PrintWriter
*
* File+流
* 1.为什么要有文件?
* 文件永久性的保存信息 将很多的数据直接存入文件----数据持久化
* 2.如果按照以行为单位写信息
* 好处在于每一行记录的信息都是相关的
* 信息我们可以读取出来 直接看懂文件
* 不好在于第一不安全 直接看懂
* 不好在于只能记录String信息 不能记录一些动作(方法)
* 3.读取出来的信息 String ---> Person
* 4.如果能将对象拆分成字节码 直接写入文件
* 将对象直接存入文件中----对象流
*/
import java.io.*;
public class TestObjectStream {
public static void main(String[] args){
// try {
// //将对象直接记录在文件中
// //对象的序列化
// Person p1 = new Person("步尔斯特",18);
// //对象输出流
// FileOutputStream fos = new FileOutputStream("D://test//Person.txt");
// ObjectOutputStream oos = new ObjectOutputStream(fos);//高级流
// oos.writeObject(p1);//将对象拆分成字节碎片 序列化到文件里
// oos.flush();
// } catch (Exception e) {
// e.printStackTrace();
// }
//需要一个对象输入流
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://test//Person.txt"));
Person p = (Person)ois.readObject();
System.out.println(p);
p.eat();//EOFException说明没有对象 通常会将所有记录的对象存在一个集合
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这里插入代码片package com.uncle.test_io.testbuffered;
import java.io.*;
public class TestBufferedReaderAndWriter {
//设计一个方法 用来用户登录认证
public String login(String username,String password){
//真实的名字和密码 永久的存在数据库---->数据持久化
//文件我们采用.txt形式的纯文本 文本中的内容 以行为单位 每一行记录一个人的信息
try {
BufferedReader br = new BufferedReader(new FileReader("D://test//User.txt"));
String user = br.readLine();//user表示一行记录 记录着账号和密码 步尔斯特-123
while(user!=null){
System.out.println("找到信息了么");
//将user的信息 按照-拆分 分别与方法的参数进行比较
String[] value = user.split("-");//value[0]账号 value[1]密码
System.out.println(value.length);
System.out.println(value[0]+"---"+username);
if(value[0].equals(username)){
System.out.println("名字对啦");
if(value[1].equals(password)){
return "登录成功";
}
}
user = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
return "用户名或密码错误";
}
public static void main(String[] args){
// try {
// BufferedWriter bw = new BufferedWriter(new FileWriter("D://test//User.txt",true));
// bw.newLine();
// bw.write("Java-888");
// bw.flush();
// } catch (IOException e) {
// e.printStackTrace();
// }
// TestBufferedReaderAndWriter test = new TestBufferedReaderAndWriter();
// String result = test.login("大叔","666");
// System.out.println(result);
// try {
// //创建一个字符形式的缓冲流 输入流 读取文件
// FileReader fr = new FileReader("D://test//User.txt");
// BufferedReader br = new BufferedReader(fr);
// String value = br.readLine();//读取文件中一行的信息 read int
// while(value!=null){
// System.out.println(value);
// value = br.readLine();
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
try {
//创建字符输入流 file String
File file = new File("D://test//Test.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
int code = br.read();
System.out.println(code);//65279
// while(code!=-1) {
// System.out.print((char)code);
// code = br.read();
// }
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.uncle.test_io.testbuffered;
import java.io.*;
public class TestBufferedStream {
public static void main(String[] args){
try {
//创建一个流 string file
File file = new File("D://test//Test.txt");
FileInputStream fis = new FileInputStream(file);
// BufferedInputStream bis = new BufferedInputStream(fis);
// bis.read(int);
// bis.read(byte[])
// bis.available();
// bis.skip(long);
// bis.close();
// FileOutputStream fos = new FileOutputStream("",true);
// BufferedOutputStream bos = new BufferedOutputStream(fos);
// bos.write(int);
// bos.write(byte[]);
// bos.flush();
// bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
package com.uncle.test_io.testbuffered;
import java.io.Serializable;
//序列化接口 上一章写了它的概念 可以有个印象 目前为止 不太重要
public class Person implements Serializable {
private long serialVersionUID = -440948515215806088L;
private String name;
private int age;
public Person(){}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return "{"+this.name+","+this.age+"}";
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public void eat(){
System.out.println(this.name+"的吃饭方法");
}
}
- 缓冲流图解