您的位置:首页 > 娱乐 > 明星 > 株洲做网站定制_vi设计全套模板_著名营销策划公司_优化关键词软件

株洲做网站定制_vi设计全套模板_著名营销策划公司_优化关键词软件

2025/2/28 15:28:11 来源:https://blog.csdn.net/2402_89094746/article/details/145726703  浏览:    关键词:株洲做网站定制_vi设计全套模板_著名营销策划公司_优化关键词软件
株洲做网站定制_vi设计全套模板_著名营销策划公司_优化关键词软件

目录

节点流与处理流

节点流

 处理流

处理流中常用类

缓冲字节流

数据流

缓冲字符流

实例问题

对象序列化-反序列化

定义

对象的输入输出流

实例

注意



节点流与处理流

● 根据封装类型不同流又分为

  • 节点流
  • 处理流

节点流

如果流封装的是如文件、字符串、字符串数组等, 则称为节点流。

 处理流

如果流封装的是其它流对象,称为处理流。 处理流提供了额外功能

处理流中常用类

缓冲字节流

  • 缓冲字节输出流 BufferedOutputStream
  • 缓冲字节输入流 BufferedInputStream
  FileInputStream fileInputStream = new FileInputStream("E:/file_a.txt");//缓冲字节流,内部有一个默认是8192长度的字节数组,进行一个数据缓存BufferedInputStream bufferedInputStream= new BufferedInputStream(fileInputStream);FileOutputStream fileOutputStream = new FileOutputStream("E:/file_e.txt");BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);byte [] bytes = new  byte[1024];int length = 0 ;while ((length=bufferedInputStream.read(bytes))!=-1){bufferedOutputStream.write(bytes,0,length);}bufferedInputStream.close();bufferedOutputStream.flush();//刷新缓冲区,将缓冲区的内容全部写出去bufferedOutputStream.close();

数据流

  • 数据输出流 DataOutputStream\
  • 数据输入流 DataInputStream
      /*模拟聊天,一人发消息(输出),一人接收到消息(输入)*///数据处理流//输出:String msg = "在吗?影";FileOutputStream outputStream = new FileOutputStream("E:/msg.txt");DataOutputStream outputStream1 = new DataOutputStream(outputStream);outputStream1.writeUTF(msg);outputStream1.flush();outputStream1.close();//输入FileInputStream inputStream = new FileInputStream("E:/msg.txt");DataInputStream datainputStream = new DataInputStream(inputStream);String s =datainputStream.readUTF();System.out.println(s);datainputStream.close();

缓冲字符流

  • 缓冲字符输出流 BufferedWriter
  • 缓冲字符输入流 BufferedReader
     /*缓冲字符流;*/FileReader reader = new FileReader("E:/msg.txt");BufferedReader bufferedReader = new BufferedReader(reader);String line = "";FileWriter writer = new FileWriter("E:/msg_1.txt", true);//true 避免被覆盖BufferedWriter bufferedWriter = new BufferedWriter(writer);String line1 = "";while ((line1=bufferedReader.readLine())!= null) {bufferedWriter.write(line1);bufferedWriter.newLine();//换行}bufferedReader.close();bufferedWriter.flush();bufferedWriter.close()

实例问题

.实现用户注册,登录。
  输入1 进入注册功能,输入2进入登录功能,输入3退出
  用户信息:账号(account),密码(password)
 (1)注册功能:输入用户账号信息,保存到文件 user.txt  
       文件中的内容格式为:(一个用户信息占一行)
            account=123;password=123 
            account=321;password=123
            account=456;password=123
            account=789;password=123       
 (2)登录:输入用户的账号,密码信息,与文件中的每行用户信息比较,判断登录是否成功.

package com.wyk.java.Io.homework;import java.io.*;
import java.util.Scanner;public class User implements Serializable {private String acccount;public  Scanner scanner=new Scanner(System.in);private String password;private void add( ) throws IOException {System.out.println("请注册账户");this.acccount = scanner.next();System.out.println("请设置密码");this.password = scanner.next();FileWriter fileWriter = new FileWriter("E:/user.txt",true);BufferedWriter writer = new BufferedWriter(fileWriter);writer.write("account="+this.acccount);writer.write(";password="+this.password);writer.newLine();writer.flush();writer.close();}private void Into() throws IOException {System.out.println("请输入账户");String s = scanner.next();System.out.println("请输入密码");String s1 = scanner.next();FileReader fileReader = new FileReader("E:/user.txt");BufferedReader reader = new BufferedReader(fileReader);boolean flag = true;String line = "";while ((line=reader.readLine())!=null){if ( line.equals("account="+s+";password+"+s1)) {flag = false;System.out.println("登录成功");break;}}if (flag ) {System.out.println("账号或密码错误");}reader.close();}public void  app(User user) throws IOException {out:while (true){System.out.println("输入1 进入注册功能--输入2 进入登录功能--输入3 退出");int close = scanner.nextInt();switch (close){case 1:user.add();break;case 2:user.Into();break ;case 3:break out;}}}}
package com.wyk.java.Io.homework;import java.io.IOException;public class text {public static void main(String[] args) throws IOException {User user = new User();user.app(user);}
}

对象序列化-反序列化

定义

Java中的对象都在内存中储存,一旦程序运行结束,内存中的对象都会消失
有时,需要在程序停止时,将对象数据长久保存下来,下次启动程序时,继续使用

对象的输入输出流

主要的作用是用于写入对象信息与读取对象信息。 对象信息 一旦写到文件 上那么对象的信息就可以做到持久化了.

对象的输出流:ObjectOutputStream

对象的输入流:ObjectInputStream

在ObjectInputStream 中用readObject()方法可以直接读取一个对象,

ObjectOutputStream中用writeObject()方法可以直接将对象保存到输出流中

实例

/*String s = "abc";Date date = new Date();//调用的是Java中给定的类·FileOutputStream outputStream = new FileOutputStream("E:/ab.txt");ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);objectOutputStream.writeObject(s);objectOutputStream.writeObject(date);objectOutputStream.flush();objectOutputStream.close();*//* FileInputStream inputStream = new FileInputStream("E:/ab.txt");ObjectInputStream objectInputStream= new ObjectInputStream(inputStream);String s1= (String) objectInputStream.readObject();Date date1 =(Date) objectInputStream.readObject();System.out.println(s1);System.out.println(date1);objectInputStream.close();*/

注意

  • 当一个类中需要被序列化(对象输出)时,该类需要实现Serializable接口,会为我们的类自动生成一个唯一编码
  • 自动生成的编码,一旦类信息发生变化后,编号会自动改变
  • 一般情况下,可以为类生成一个固定的身份证号,当类信息改变时,编号不会发生改变

Java中生成序列化id的操作

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com