缓冲流、对象流、数组流、数据流、字符串流、转换流、打印流

  • 代码写到的缓冲流和文件流比较重要
  • 别的那些很不常用 有个印象就可以
  • 用到去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+"的吃饭方法");
    }
}

  • 缓冲流图解
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_51945027/article/details/112971411