java——IO流整理(一)

一、基础

1.字节、字符

  • 位(bit)   :二进制中的一个1或0称为1位
  • 字节(byte) :8个二进制位称为一个字节
  • 字符      :一个自然符号称为字符。英文符号(1个字节)、中文符号(2个字节)

2.编码格式

  • ASCII        :有256字符组成,内部包含了对英文、符号及数字的定义
  • GB2312        :扩展后的中文字符集。内部包含了2万多个中文字符
  • ISO-8859-1   : 欧美字符集
  • Unicode        :包含了所有字符的字符集。内容有双字节组成
  • Utf-8            : 包含了大部分字符的字符集。实际使用中应用比较广泛的字符集

二、IO

1.概述

  IO是Input Output的缩写,表示输入与输出。IO按照不同的方式可以包含如下分类

    文件在读取或传输过程中连续的内容就称为流。

  2. 内容读取方式

    字节流方式和字符流方式

  3. 按照方向划分

    输入流(从源到程序称为输入流)和输出流(从程序到目标源称为输出流)

2. 字节流方式处理

1.输入流

  • FileInputStream           :按照字节流方式对内容进行读取(不适用缓存)
  • BufferedInputStream   :按照字节方式对内容进行读取(使用了缓存)
  • DataInputStream         :按照类型对内容进行读取
  • ObjectInputStream      :按照对象的类型进行数据的读取(反序列化过程中必须使用)
  • ByteArrayInputStream  : 提供一个byte型的输入缓冲区

2.输出流

  • FileOutputStream      :对内容进行输出(未使用缓冲区)
  • BufferedOutputStream  :使用缓冲区对内容进行输出
  • DataOutputStream    :对内容按照类型进行存储
  • ObjectOutputStream     :对对象进行存储(序列化过程必须使用)
  • PrintStream                  :功能与OutputStream相似,但是提供了更加丰富的输出方式
  • ByteArrayOutputStream :对输出内容提供一个缓冲区

3. 字节流方式处理

1. 输入流

  • FileReader
  • BufferReader
  • CharArrayReader
  • StringReader

2. 输出流

  • FileWriter
  • BufferWriter
  • CharArrayWriter
  • StringWriter
  • PrintWriter

3.常见方法

  • Read() :读取内容
  • Write() :向媒体中写入内容
  • Flush() :刷新缓冲区,强制将内容写入到文件中
  • Close() :关闭当前对象

三、 序列化与反序列化

1.持久化存储

将对象的内容进行长期的保存(对象内容时存储在内存中的,随着程序的关闭对象的信息也会丢失)。通过将对象的内容写入到文件中以实现文件内容的持久化保存

2.序列化及反序列化

2.1. 概念

  • 序列化

将对象存储到文件的过程就成为序列化。

  • 反序列化

将文件中的内容转换为对象的过程就成为反序列化

2.2. 要求

  • 只有实现了Serializable接口的类才具有可序列化的能力
  • 如果类中使用了其他的类,则该类也必须实现Serializable接口
  • Static的内容是不会被序列化的(因为static成员是属于类的)
  • 如果对象中的某个属性不需要被序列化可以是transient进行修饰
  • 属性的访问修饰符是无法被序列化的
  • 不同版本的序列化文件无法兼容

2.3. 实现步骤

1) 自定义类并实现Serializable接口

2) 创建ObjectOutput(Input)Stream对象

3) 通过对象进行读取或写入

4) 关闭流对象

2.4. 优点

以二进制形式存在,所以具有与平台无关性的特点(可以在各种平台上使用)。

2.5. 应用

  • 网络中对象数据的传输(Socket通信)
  • 对象的持久化保存

 

转载于:https://www.cnblogs.com/rsdqc/p/5388631.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js学习笔记

Node介绍 为什么要学习Node.js 企业需求 具有服务端开发经验更改front-endback-end全栈开发工程师基本的网站开发能力 服务端前端运维部署 多人社区 Node.js是什么 Node.js是JavaScript 运行时通俗易懂的讲,Node.js是JavaScript的运行平台Node.js既不是语言&am…

《统计学习方法》学习笔记目录

此篇为 李航老师著的《统计学习方法》的学习笔记汇总,准备学习并敲一敲代码,还请大家不吝赐教!updated on 2020.4.26 一些相关的实践:请查阅机器学习 1. 统计学习及监督学习概论 2. 感知机(Perceptron) …

iOS: 属性声明strong和retain竟然不一样

今天和同事在处理一处用strong声明的Block属性引发的问题时偶然发现的。在诸多教程中都会讲到:声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong)。不过在声明Block时,使用strong和retain会有截然不同的…

一、node.js搭建最简单的服务器

node.js搭建最简单的服务器 代码演示: // 1. 加载http核心模块 var http require(http)// 2. 使用http.createServer()方法创建一个Web服务器 // 返回一个Server实例 var server http.createServer()// 3. 服务器干嘛? // 提供服务: 对数…

DDD 领域驱动设计-如何 DDD?

注:科比今天要退役了,我是 60 亿分之一,满腹怀念~??? 前几天看了园友的一篇文章《我眼中的领域驱动设计》,文中有段话直击痛点:有人误认为项目架构中加入 Repository,Domain,Valu…

二、搭建Apache服务器 模板引擎

1. 案例:搭建简单的Apache服务器 var http require(http) var fs require(fs)var server http.createServer()var wwwDir D:\\CWork\\node.js黑马程序员\\study_nodejs\\day02\\code\\wwwserver.on(request, function(req, res) {var url req.urlfs.readFile(…

三、案例:留言板 url.parse()

1. url.parse()的使用 2. 留言板案例 index.html: <!DOCTYPE html> <!-- saved from url(0027)http://192.168.150.76:3000/ --> <html lang"en"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8…

iOS开发——收集Github上的iOS控件和开发资料

https://github.com/JanzTam/MyGithubMark转载于:https://www.cnblogs.com/adople/p/5391912.html

四、模块系统

什么是模块化 文件作用域(模块是独立的&#xff0c;在不同的文件使用必须要重新引用)【在node中没有全局作用域&#xff0c;它是文件模块作用域】通信规则 加载require导出exports CommonJS模块规范 在Node中的JavaScript还有一个重要的概念&#xff0c;模块系统。 模块作用…

Jquery 实现原理之 Ajax

一&#xff1a;Jquery Ajax底层接口有&#xff1a;$.ajaxPrefilters、$.ajaxTransport、$.ajaxSettings、$ajaxSetup、$ajaxSettings; 其中$.ajaxPrefilters 和 $.ajaxTransport是通过inspectPrefiltersOrTransports构造器来创建的; $.ajaxPrefilters&#xff1a;是一个前置过滤…

一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)

第 1 章&#xff1a;原生 AJAX 1.1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c; 最大的优势&#xff1a;无刷新获取数据。 AJAX 不是新的编程语言&#xff0c;而是…

App安全之网络传输安全

移动端App安全如果按CS结构来划分的话&#xff0c;主要涉及客户端本身数据安全&#xff0c;Client到Server网络传输的安全&#xff0c;客户端本身安全又包括代码安全和数据存储安全。所以当我们谈论App安全问题的时候一般来说在以下三类范畴当中。 App代码安全&#xff0c;包括…

二、nodemon-Node.js 监控工具

nodemon-Node.js 监控工具 https://www.npmjs.com/package/nodemon 这个工具在我们改变了服务端代码时&#xff0c;会自动重启服务器&#xff0c;不需要我们再手动去重启服务器了&#xff0c;方面我们后面调试代码&#xff01; 1. 安装 node &#xff1a;http://nodejs.cn/d…

利用动态规划(DP)解决 Coin Change 问题

问题来源 这是Hackerrank上的一个比较有意思的问题&#xff0c;详见下面的链接&#xff1a; https://www.hackerrank.com/challenges/ctci-coin-change 问题简述 给定m个不同面额的硬币&#xff0c;C{c0, c1, c2…cm-1}&#xff0c;找到共有几种不同的组合可以使得数额为n的…

jquery datatable设置垂直滚动后,表头(th)错位问题

jquery datatable设置垂直滚动后&#xff0c;表头(th)错位问题 问题描述&#xff1a; 我在datatable里设置&#xff1a;”scrollY”: ‘300px’,垂直滚动属性后&#xff0c;表头的宽度就会错位&#xff0c;代码如下&#xff1a; <!-- HTML代码 --> <table id"dem…

三、解决ie缓存问题

解决 IE 缓存问题 问题&#xff1a;在一些浏览器中(IE),由于缓存机制的存在&#xff0c;ajax 只会发送的第一次请求&#xff0c;剩余多次请求不会在发送给浏览器而是直接加载缓存中的数据。 在谷歌浏览器中&#xff0c;修改了服务器代码&#xff0c;重新发送请求时&#xff0…

利用BFS和DFS解决 LeetCode 130: Surrounded Regions

问题来源 此题来源于LEETCODE&#xff0c;具体问题详见下面的链接 https://leetcode.com/problems/surrounded-regions/description/ 问题简述 给定一个包含字母 X 和 O 的二维矩阵&#xff0c;找到所有被 X 包围的 O 并将被包围的 O 变成 X。 比如给定如下矩阵&#xff1…

锁!代码锁

一&#xff0c;代码锁 异步 并发&#xff0c;各干各的 (比如&#xff1a;一群人同时上卡车) 同步 步调一致的处理 &#xff08;比如&#xff1a;一群人排队上公交车&#xff09; 多个线程并发读写同一个资源的时候会发生“线程并发安全问题”&#xff0c;如果保证…

imageNamed和imageWithContentsOfFile-无法加载图片的问题

问题描述 图片资源放在Assets.xcassets中&#xff0c;分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象&#xff0c;但发生奇怪的情况&#xff0c;前者获取到图片对象&#xff0c;后者结果为nil。代码如下&#xff1a; 1.通过UIImage的类方法imageNamed:…