当前位置: 首页 > news >正文

杨凌做网站专业零基础网站建设教学在哪里

杨凌做网站,专业零基础网站建设教学在哪里,平面设计兼职,网络建站流程IO流作用 对文件或者网络中的数据进行读写操作。 简单记#xff1a;输入流读数据#xff0c;输出流写数据。 Java的输出流主要以OutputStream和Writer作为基类#xff0c;输入流主要是以InputStream和Reader作为基类。 按处理数据单元分类 字节流 字节输入流#xff…IO流作用 对文件或者网络中的数据进行读写操作。 简单记输入流读数据输出流写数据。 Java的输出流主要以OutputStream和Writer作为基类输入流主要是以InputStream和Reader作为基类。 按处理数据单元分类 字节流 字节输入流InputStream常用的实现类是FileInputStream字节输出流OutputStream常用的实现类是FileOutputStream 字符流 字符输入流Reader常用实现类FileReader字符输出流Writer常用实现类FileWriter 字节流 InputStream类的一些常用方法 in.read() 从输入流中读取下一个字节的数据 in.read(byte[] b)将读取出来的数据存入字节数组中 in.read(byte[] b, int offset, int len)从输入流中读取最多len长度的字节保存到字节数组b中保存的位置从offset开始 in.readAllbytes()读取所有字节返回一个字节数组 FileInputStream类的常用方法InputStream中的所欲方法都可以用。 int  available()可读取的字节数 long  skip(long n)跳过个字节开始读取 OutputStream类的常用方法 void  write(int c)将指定的字节写入输出流 void write(byte[] b)将数组中的所有字节写入输出流中 void write(byte[] b, int offset, int len)将字节数组中从偏移量offset开始的长度为len的字节数据输出到输出流中 close()关闭资源 FileOutputStream类的常用方法OutputStream的所有方法它都可以使用 构造方法 public FileOutputStream(File file) public FileOutputStream(File file,boolean append) public FileOutputStream(String name) public FileOutputStream(String name,boolean append) JDK7以前的资源释放 在try-catch的try中释放资源。 JDK7以后的资源释放 使用try-with-source实现了AutoCloseable接口的类的对象才可以可以自动释放资源。 字符流 Reader类的常用方法 int read()读取下一个字节 int read(char[] chars)将读取出来的字符存到chars数组中 int read(char[] chars, int offset, int len)从输入流中最多读取len个字符保存到字符数组 c中保存的位置从offset位置开始返回实际读取的字符数 void mark(int readlimit)标记流中的当前位置 boolean markSupported()检索此流是否支持标记 long transferTo(Writer out)复制内容到另一个文件中 FileReader类的常用方法 构造方法字符流可以在创建对象的时候指定字符集这一点与字节流不同 public FileReader(File file) public FileReader(File file, Charset  set) public FileReader(String name) public FileReader(String name, Charset  set) 构造方法中不指定字符集就使用平台的默认字符。 Writer类的常用方法 void write(String str) void write(String str, int offset, int len)将str字符串里从offset位置开始长度为len的多个字符输出到输出流中 void write(char[] chars)将字符存到插入式数组中 void write(char[] chars, int offset, int len)写入字符数组的一部分 void close关闭资源 void flush()刷新流字符流写入完成之后必须刷新这样写出去的数据才能生效 FileWriter类的常用方法 构造方法 public FileWriter(File file) public FileWriter(File file, Charset set) public FileWriter(File file, Charset set, boolean append) public FileWriter(String name) public FileWriter(String name, Charset set) public FileWriter(String name, Charset set, boolean append) 字节流和字符流的使用时机 字节流处理记事本无法正常读取的例如图片、视频、音频。 字符流处理记事本可以正常读取的涉及到字符的。 缓存流 字节缓存流 字节输入缓存流BufferedInputStream,InputStream的子类与FileInputStream搭配使用字节输出缓存流BufferedOutputStreamOutputStream的子类与FileOutputStream搭配使用 字符缓存流 字符输入缓存流BufferedReaderReader的子类与FileReader搭配使用字符输出缓存流BufferedWriterWriter的子类与FileWriter搭配使用 缓存流的作用对原始流进行包装提高原始流读写数据的性能。缓存流不能单独使用缓存流依赖于原始流。 缓存流底层有一个8kb的数组读数据的时候会一次性把数组读满然后每次从数组中拿数据写数据的时候也会把数组写满然后再从数组中取。 字节缓存流构造方法 BufferedInputStream(InputStream in)传一个原始流对象 BufferedInputStream(InputStream inint size)size指缓存的大小 BufferedOutputStream(OutputStream out)传一个原始流对象 BufferedOutputStream(OutputStream outint size)size指缓存的大小 常用方法 void mark(int readlimit)标记流中的当前位置 boolean markSupported()测试此流是否支持mark和reset方法 void reset()返回标记处 字符缓存流的构造方法 BufferedReader(Reader in)传一个原始流对象 BufferedReader(Reader in int size)size指缓存的大小 新增方法 String readLine()读取一行文本 BufferedWriter(Writer out)传一个原始流对象 BufferedWriter(Writer out int size)size指缓存的大小 新增方法 void writeLine()写一行文本 void newLine()换行 转换流 转换流用于将字节流转换为字符流。 InputStreamReader类 构造方法 InputStreamReader(InputStream in) InputStreamReader(InputStream in Charset set) InputStreamReader(InputStream in String charsetName) 常用方法 String getEncoding()获取该流使用的字符集 OutputStreamWriter类 构造方法 OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out Charset set) OutputStreamWriter(OutputStream out String charsetName) 常用方法 String getEncoding()获取该流使用的字符集 数据流 数据流是一种包装流需要和原始流结合使用。 DataInputStream 新增方法可以读取特定数据类型的字节 void write(byte[] b, int off, int len) void write(int b) final void writeBoolean(boolean v) final void writeByte(int v) final void writeBytes(String s) final void writeChar(int v) final void writeChars(String s) final void writeDouble(double v) final void writeUTF(String str) DataOutputStream DataOutputStream的方法和DataInputStream的差不多。 对象流读取对象信息 深浅拷贝 深拷贝和浅拷贝是用于描述对象复制的两个概念。 浅拷贝复制了对象的引用不是实际的数据。因此新对象和原始对象共享引用数据类型的引用修改原始对象的值会影响复制之后的对象的值。 深拷贝创建一个新对象将原始对象的所有成员变量递归的复制到新对象中。新对象和原始对象互不影响互相独立。 Cloneable接口 Cloneable接口是一个标记接口它本身不包含任何方法。如果一个类实现了Cloneable接口那就 表明该类的实例可以通过调用 Object 类的 clone() 方法来创建一个新的对象就是可以拷贝。 Cloneable接口并没有定义clone()方法而是要求实现类提供自己的clone()方法来执行克隆作。 clone() 方法执行的是浅拷贝操作。 实现Cloneable接口必须要重写clone()方法这个clone()是Object类的如果是深拷贝要在clone()方法中进行额外的处理就要递归的复制。 序列化和反序列化 序列化就是将对象的状态存储到特定存储介质中的过程也就是将对象信息放到文本文件中序列化后的对象时二进制状态。 反序列化就是和序列化相反从特定存储介质中读取数据并重新构建对象的过程也就是从文本文件中获取对象信息。 Serializable接口 此接口用于标识一个类可以被序列化它是一个标记接口没有任何方法。 序列化实现 ObjectOutputStream类 ObjectOutputStream也是包装类要和原始流字节输出流结合使用不能单独使用。 构造方法 public ObjectOutputStream(OutputStream out) 使用方法 writeObject(Object obj)将指定对象写入ObjectOutputStream中。 反序列化实现 ObjectInputStream类 ObjectInputStream类也是包装类要和原始字节输入流结合使用。 使用方法 Object readObject()从ObjectInpuStream读取对象信息。 深拷贝的几种实现方法 自己写比较麻烦引用类型的成员变量需要递归的复制到新对象中。序列化和反序列化对象所在的类要实现Serialzable接口才可以被序列化。ObjectOutputStream类的writeObject(obj)把对象写入文本文件中。ObjectInputStream类的readObject()从文本文件中获取对象信息。现将对象转换成JSON字符串再从JSON字符串转成对象这个过程实现类深拷贝。 package exec.shencopy;import com.alibaba.fastjson2.JSON; import lombok.Data;import java.io.*;Data public class Person implements Serializable,Cloneable {private String name;private String no;private Person son;public Person() {}public Person(String name, String no, Person son) {this.name name;this.no no;this.son son;}Overridepublic Object clone() {//使用JSON完成深拷贝String string JSON.toJSONString(this);return JSON.parseObject(string, Person.class);} // Override // public Object clone() { // //使用序列化反序列化完成深拷贝 // try (ObjectOutputStream outputStream new ObjectOutputStream(new FileOutputStream(E:/Html/abc/serializable.txt)); // ObjectInputStream inputStream new ObjectInputStream(new FileInputStream(E:/Html/abc/serializable.txt));) { // outputStream.writeObject(this); // return inputStream.readObject(); // } catch (IOException e) { // e.printStackTrace(); // } catch (ClassNotFoundException e) { // throw new RuntimeException(e); // } // return null; // } }package exec.shencopy;import java.io.*;public class Test {public static void main(String[] args) {//分别使用JSON和序列化反序列化实现Person person new Person(小头爸爸,001,new Person(大头儿子,002,null));Person clone (Person) person.clone();//使用序列化和反序列化实现深拷贝//使用JSON实现深拷贝System.out.println(person.getSon() clone.getSon());} }transient关键字 transient关键字用于修饰类的成员变量被该关键字修饰的变量不参与序列化。 SerialVersionUID SerialVersionUID是Java中用于版本控制的一个特殊字段用于确保序列化和反序列化的兼容性。序列化一个对象时SerialVersionUID的值会被记录在序列化数据中。 反序列化时Java会检查当前SerialVersionUID的值与当前类中的SerialVersionUID值是否匹配。如果不匹配会抛出InvalidClassException从而防止对象的不兼容版本被序列化。 如果没有显示指定SerialVersionUID的值Java会根据类结构自动生成一个SerialVersionUID这种默认的计算方式在类结构变化时导致不兼容性。因此最好显示指定一个SerialVersionUID的值。 例如private static final long serialVersionUID 1l;
http://www.sadfv.cn/news/87472/

相关文章:

  • 电子商务网站开发公司anivia wordpress templates 1.3
  • 做图像网站做网站目录
  • 沈阳酒店团购网站制作自己做的网站怎么接入网页游戏
  • 有没有做培养基的网站山西制作网站公司排名
  • 校园网站建设和管理工作制度中国邮政做特产的网站
  • 网站的基本结构安徽网站搭建
  • 培训中心网站建设论文搜狗站长推送工具
  • 网站建设的项目方案模板开发一套软件需要多少钱
  • qwins是哪个网站做的seo教程 百度网盘
  • 做网站的流程是怎么样的三亚网站开发
  • 网站显示结算网站注册手机号安全吗
  • 网站建设 APPhtml特效网站
  • 网站设计 工作定制型网站建设推广
  • 外汇黄金网站建设安卓app做网站外壳
  • 江门企业网站模板建站企业管理咨询包括哪些
  • 北京示范校建设网站免费商城建站平台
  • 制作网页的网站fa广州网站制作服务
  • 酒店网站建站百度代运营
  • dreamwearver做网站地图wordpress固定链接标签加上页面
  • 喜欢做木工 网站wordpress和phpmyadmin
  • 做游戏的php网站邯郸专业做网站
  • dw网站建设模板国内做的比较大的外贸电商网站
  • 网站生成静态慢原因室内装修公司哪家好
  • 电影网站系统源码网站前台首页无法显示
  • 优化企业网站标题做网站低价
  • 网站成立时间如何新建一个网页页面
  • 教育学校网站做网级移动营销
  • 用网站做淘客怎么赚钱企业网站设计的方案
  • 自己做网站iis设置怎么重装wordpress
  • 汽车之家网站开发方案平面设计的创意手法有哪些