Java入门第六篇:I/O流

[java中的IO流]

分类:

1. 根据流的方向:输入流和输出流

根据读取文字的大小:字节流和字符流;

字节流按字节读取,读取中文时会产生乱码,字符流按字符读取,通常用于读取中文。

根据读取的方式:节点流和缓存流

[BufferedInputStream和....Output..]

新建一个对象,传入一个文件,这个对象作为缓存流。可以减少文件的读写次数,提高读写速度。

程序最后,刷新缓存流:bos.fluse();

缓存区一定要关!

bis.close();

bos.close();(会自动刷新缓存流)

缓存流的作用:

将文件对象作为参数传入缓存对象。

这种写法,我们称之为IO链,IO关闭时只需要关闭最外层流,内层流将自动关闭。

[DataInputStream类]

用二进制对文件进行读写操作,(可读写二进制文件、基本fis读写可能出现乱码)。

与基本流相比,可以直接读写java中的基本数据类型。

(使用DataOutputStream写入的文件,只能使用DataInputStream读 )

方法.readUTF();可读取中文。

[ObjectInputStream]

1.与基本流相同,可以直接使用read和writer读写;

2.与DataInputStream相同,可以对java基本数据类型进行直接读写。

方法.redaInt(); readDouble();等

3.使用可以使用readObject()和writeObject()对对象进行读写。

 读写对象时,一定要对要读写的对象类实现序列化。

[对象的序列化和反序列化]

概念:

对象的序列化:将程序中的对象,持久化的保存在文件中的过程。

对象的反序列化:将文件中保存的对象,重新读取到程序中的过程。

序列化必须对象所属 的类必须实现serializable接口

当一个实体类,实现可序化接口后,可以it安家一个序列化版本号ID

private static final long serialVersionUID = 1L;

添加以后,可以用ID表示序列化和反序列化操作的对象,是同一个对象。

否则序列化之后,如果实体类属性有删减,在进行序列化时 系统默认不是同一类,会造成错误。

[字符流]

1.在处理数据单元时,以一个字符作为单位;

而字节流,以一个字节作为单位。

2.字符的基类:

Reader和Writer 是抽象类

FileReader和FileWriter是直接继承字抽象类的两个基本字符流。

3.FileReader和FileWriter只能使用系统使用的编码格式;

无法指定编码,如果文件格式与系统默认格式不一样,那使用这两个方法读写将造成中文乱码。

[InputStreamReader和OutputStreamWriter]

1.将字节流转换为字符流,同时支持自定义读写的编码格式;

文件传入时自带缓存功能。

2.常见的编码格式。

  ASCII : 美国标准消息码;

  ISO8859-1 : 欧洲码;

  GB2312 : 国标码;

  GBK : 国标扩展码;

ANSI编码,可以分为很多种;

  简体中文:

    GB2312;

    GBk;

  繁体中文:

    BIG-5;

Unicode编码:国际标准码,兼容绝大部分国家的编码格式。

可以分为UTF-6,UTF-8,UTF-16。

原文地址:https://www.cnblogs.com/lslboy/p/8907246.html

时间: 2024-08-30 09:39:17

Java入门第六篇:I/O流的相关文章

Android JNI入门第六篇——C调用Java

本篇将介绍在JNI编程中C调用Java实现. 源码下载地址:http://download.csdn.net/detail/xyz_lmn/4868265 关键代码: java: [java] view plaincopyprint? public class CCallJava { public static String getTime() { Log.d("CCallJava",  "Call From C Java Static Method" +Strin

Android入门第六篇之ListView (一)

本文来自http://blog.csdn.net/hellogv/ ListView是一个经经常使用到的控件,ListView里面的每一个子项Item能够使一个字符串,也能够是一个组合控件.先说说ListView的实现: 1.准备ListView要显示的数据 : 2.使用 一维或多维 动态数组 保存数据: 2.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item: 3.把 适配器 加入到ListView,并显示出来. 接下来,看看本文代码所实现的L

java入门第七篇-JQuery;

[JQuery语法] 1.使用Jquery必须先导入jquery.x.x.x.js文件 2.JQuery中的选择器: $("选择器名称").方法().($是JQuery的缩写,也就是说选择器可以是JQuery("选择器名称").方法().) present+ next:选定 present节点的下一个相邻节点. present~ next:选定present节点的后面全部兄弟节点. 3. jQuery中的文档就绪函数: $(document).ready(funct

JavaMail入门第四篇 接收邮件

上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,再介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMail API中定义了一个java.mail.Store类,它用于执行邮件的接收任务,我们在程序中调用这个类中的方法可以获取邮箱中的各个邮件夹的信息.JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法可以

java入门第三步之数据库连接【转】

数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Database Connectivity(开放数据库连接性):基于C语言的一套数据库编程接口,主要功能是提供数据库的访问和操作所有的数据库厂商对这套接口进行实现,不同数据库厂商提供的实现是不一样的,也就是通常所说的第三方支持,而这套编程接口就是我们的标准 2.JDBC——Java Database Conn

JavaMail入门第五篇 解析邮件

上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏览器之前明确地指定该数据流属于哪种数据类型即可,之后一切的解析操作由浏览器自动帮我们完成.下面这张图可以很好的说明解析邮件的步骤 1.调用Message对象的getFrom.getSubject等方法,可以得到邮件的发件人和主题等信息,调用getCont

java入门第四步之应用服务器的安装(Tomcat)【转】

首先打开myeclipse,在myeclipse菜单栏下面有两个按钮: 左边的按钮是进行项目的部署的(即将项目部署到服务器上),右边的按钮是进行服务器的启动的,如果你安装了tomcat服务器,那你就可以在右边按钮点击的下拉框中 找到对应的服务器, 下面我来介绍下Tomcat服务器的安装(也不能叫安装,就是引入下): 点击菜单栏的Window---->选择Preferences----->在左边的菜单栏中选择MyEclipse---->servers----->tomcat 然后根据

java入门第五步之数据库项目实战【转】

在真正进入代码编写前些进行一些工具的准备: 1.保证有一个可用的数据库,这里我用sql server 2000为例,2.拥有一个ide,如ecelise或myeclipse等,这里我使用的是myeclipse 8.5 3.数据库连接的架包: 这里数据库的安装就不说了,如果你安装的sql server 2000的话,你在使用jdbc进行连接时还需要打上sp3补丁: 一切准备就绪后我们就开始进入正题了: 1.首先我们在file--->New---->Web Project(也可以再Package

学习java随笔第六篇:数组

一维数组 创建一维数组并输出 public class OneDimensionalArray { public static void main(String argas[]) { int i[]=new int[10]; for(int j=0;j<i.length;j++) { i[j]=j; System.out.println(i[j]); } } } 多维数组 创建多维数组并输出 public class MultiDimensional { public static void m