javaIO流
2016-05-14 19:47
405 查看
utf-16be编码:一个中文两个字节,英文两个字节
utf-8编码:一个中文三个字节,英文一个字节
gbk:一个中文两个个字节,英文一个字节
1、当你的字节序列式某种编码时,这个时候想把字节变成字符串的时候,字符串也要用这种编码,否则会出现乱码
2、文本文件就是字节序列,可以是任意编码的序列。在中文机器上直接建立文本文件,只可以认识ANSI;但是粘贴过来的是认识的。
3、java.IO.File表示文件(目录),只用于表示文件目录的信息(大小名称等),不能用于内容的访问
4、java创建文件夹:File.mkdir();
创建txt文件之类:File.createNewFile();
这两个循环是一个意思的
1、RandomAccessFile:可以读取文件,写文件;支持随机访问文件(可以访问文件的任意位置)
2、java文件模型:在硬盘上的文件是byte,是数据的集合
打开文件:
"rw"读写;"r"只读
RandomAccessFile fp = new RandomAccessFile(filename, method(“rw” “r”));
里边存在一个文件指针,打开的时候文件指针是从零开始的,pointer = 0;之后随着文件的读取,pointer会增加
写文件:
fp.write(int);一次只可以写一个字节(8位),同时指针指向下一个位置
读文件:
int b = fp.read();读一个字节
文件用完之后要关闭
4、javaIO流(输入流、输出流;又分字节流,字符流)
(1)字节流:
InputStream、OutputStream两个抽象类(父类)
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
2)文件读取结束:
EOF=End 读到-1就读到结尾
3)输入流基本方法:
int b = in.read();读取一个字节,无符号填充到int的低8位,高8位补0,-1是文件结束标志
in.read(byte[] bytes);读取数据直接填写到一个字节数组里边
in.read(byte[] bytes, int start, int size);读取数据放到字节数组里边,从字节数组的start开始,放的数据的大 小是size
4)输出流基本方法:
out.write(int b);写出一个字节到流,写b的低8位(一个int是32位,4个字节)
in.write(byte[] bytes);将缓冲byte数组都写入到流
in.read(byte[] bytes, int start, int size);从字节数组的start开始,大小是size的数据写入到流
5)子类:
FileInputStream——具体实现了文件上读取数据
FileOutputStrean——具体实现了向文件中写数据
DataOutputStream/DataInputStream
对流功能的扩展,可以更加方便的读取int,long,字符等类型的数据。
DataOutputStream
writeInt()/writeDouble()/writeUTF();
DataInputStream
readInt();可以直接读取int类型的数据
BufferedInputStream/BufferedOutputStream
这两个流类为IO提供了带缓冲区的操作,一般打开文件,进行写入或读取操作时,都会加上缓冲,这种模式提供了 IO的性能
FileOutputStream-->一次只操作一个字节
DataOutputStream-->一次操作多个字节
BufferedOutputStream-->把所有的字节都拿出来,进行一次操作
(2)字符流:--->一般操作的是文本文件
1)认识文本和文本文件
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码),是byte byte byte……的数据序列
文本文件是文本(char)序列,按照某种编码方案(utf-8 utf-16be gbk)序列化为byte的存储
2)输出流/输入流(Reader Writer)
字符处理,一次处理一个字符
字符的底层仍然是基本的字节序列
3)InputStreamReader 完成byte流解析成char流,按照编码解析
OutputStreamWriter 完成char流到byte流,按照编码处理
FileReader fr = new FileReader("path");
FileWriter fw = new FileWriter("path");
4)字符流的过滤器
BufferedReader ---->readLine一次读一行
BufferedWriter/PrintWriter ----->写一行
(3)对象的序列化和反序列化
1) 将Object转换成byte,叫对象的序列化,反之叫反序列化
2)序列化流(ObjectOutputStream)是过滤------主要方法,writeObject
反序列化流(ObjectInputStream)-----主要方法是,readObject
3)序列化接口(Serializable)
对象必须实现序列化接口才可以进行序列化,否则会出现异常
这个接口没有任何方法,只是一个标准
private transient int age; 不能进行默认的序列化
utf-8编码:一个中文三个字节,英文一个字节
gbk:一个中文两个个字节,英文一个字节
1、当你的字节序列式某种编码时,这个时候想把字节变成字符串的时候,字符串也要用这种编码,否则会出现乱码
2、文本文件就是字节序列,可以是任意编码的序列。在中文机器上直接建立文本文件,只可以认识ANSI;但是粘贴过来的是认识的。
3、java.IO.File表示文件(目录),只用于表示文件目录的信息(大小名称等),不能用于内容的访问
4、java创建文件夹:File.mkdir();
创建txt文件之类:File.createNewFile();
for(byte b:bytes)
for(int b = 0; b < bytes.length; b++)
这两个循环是一个意思的
1、RandomAccessFile:可以读取文件,写文件;支持随机访问文件(可以访问文件的任意位置)
2、java文件模型:在硬盘上的文件是byte,是数据的集合
打开文件:
"rw"读写;"r"只读
RandomAccessFile fp = new RandomAccessFile(filename, method(“rw” “r”));
里边存在一个文件指针,打开的时候文件指针是从零开始的,pointer = 0;之后随着文件的读取,pointer会增加
写文件:
fp.write(int);一次只可以写一个字节(8位),同时指针指向下一个位置
读文件:
int b = fp.read();读一个字节
文件用完之后要关闭
4、javaIO流(输入流、输出流;又分字节流,字符流)
(1)字节流:
InputStream、OutputStream两个抽象类(父类)
InputStream抽象了应用程序读取数据的方式
OutputStream抽象了应用程序写出数据的方式
2)文件读取结束:
EOF=End 读到-1就读到结尾
3)输入流基本方法:
int b = in.read();读取一个字节,无符号填充到int的低8位,高8位补0,-1是文件结束标志
in.read(byte[] bytes);读取数据直接填写到一个字节数组里边
in.read(byte[] bytes, int start, int size);读取数据放到字节数组里边,从字节数组的start开始,放的数据的大 小是size
4)输出流基本方法:
out.write(int b);写出一个字节到流,写b的低8位(一个int是32位,4个字节)
in.write(byte[] bytes);将缓冲byte数组都写入到流
in.read(byte[] bytes, int start, int size);从字节数组的start开始,大小是size的数据写入到流
5)子类:
FileInputStream——具体实现了文件上读取数据
FileOutputStrean——具体实现了向文件中写数据
DataOutputStream/DataInputStream
对流功能的扩展,可以更加方便的读取int,long,字符等类型的数据。
DataOutputStream
writeInt()/writeDouble()/writeUTF();
DataInputStream
readInt();可以直接读取int类型的数据
BufferedInputStream/BufferedOutputStream
这两个流类为IO提供了带缓冲区的操作,一般打开文件,进行写入或读取操作时,都会加上缓冲,这种模式提供了 IO的性能
FileOutputStream-->一次只操作一个字节
DataOutputStream-->一次操作多个字节
BufferedOutputStream-->把所有的字节都拿出来,进行一次操作
(2)字符流:--->一般操作的是文本文件
1)认识文本和文本文件
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码),是byte byte byte……的数据序列
文本文件是文本(char)序列,按照某种编码方案(utf-8 utf-16be gbk)序列化为byte的存储
2)输出流/输入流(Reader Writer)
字符处理,一次处理一个字符
字符的底层仍然是基本的字节序列
3)InputStreamReader 完成byte流解析成char流,按照编码解析
OutputStreamWriter 完成char流到byte流,按照编码处理
FileReader fr = new FileReader("path");
FileWriter fw = new FileWriter("path");
4)字符流的过滤器
BufferedReader ---->readLine一次读一行
BufferedWriter/PrintWriter ----->写一行
(3)对象的序列化和反序列化
1) 将Object转换成byte,叫对象的序列化,反之叫反序列化
2)序列化流(ObjectOutputStream)是过滤------主要方法,writeObject
反序列化流(ObjectInputStream)-----主要方法是,readObject
3)序列化接口(Serializable)
对象必须实现序列化接口才可以进行序列化,否则会出现异常
这个接口没有任何方法,只是一个标准
private transient int age; 不能进行默认的序列化
相关文章推荐
- Java入门习题(五)——内部类
- 百度之星2016B题java大数
- [原创]java WEB学习笔记06:ServletContext接口
- Spring MVC 概述
- java常用设计模式
- Java正则表达式实现${name}形式的字符串模板
- Eclipse ADT->Android Studio
- 关于java变量的初始化问题
- ssm框架学习03--springmvc和mybatis整合
- n!的实现(java)
- Java反射详解,从理论到实践
- java基础学习总结六(对象与类、类的属性与方法)
- java反射机制
- Java 反射机制(一)
- <Spring>Spring MVC之@RequestBody, @ResponseBody 详解
- 二叉树的几种遍历递归与非递归java实现
- ssm框架学习02--mybatis和spring的整合
- 【JDK】:java.lang.Integer源码解析
- java 余数
- hdoj2021 (java) 发工资咯:)(二维数组&&绝对值)