JAVA—IO操作
一、JAVA I/O 输入输出流
1:编码问题
2:File类的使用
3:RandomAccessFile的使用
4:字节流的使用
5:字符流的使用
6:对象的序列化和反序列化
2: file类的使用。
java.io.file类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称,大小等),不能用于文件内容的访问。
3:RandomAccessFile的使用
RandomAccessFile java 提供的对文件内容的访问,既可以读文件,也可以写文件。
RandomAccessFile 支持随机访问文件,可以访问文件的任意位置。
(1)java 文件模型
在硬盘上的文件是 byte byte byte 存储的,是数据的集合。
(2)打开文件
有两种模式,“rw” (读写) “r”(只读)
RandomAccessFile raf=new RandomAccessFile(file,"rw");
文件指针,打开文件时指针在开头 pointer=0;
(3)写方法。
raf.write(int)---> 只写一个字节(后八位),同时指针指向下一个位置,准备再次写入。
(4)读方法。
int b = raf.read(); ---> 读一个字节
(5)文件读写完成以后一定要关闭(Oracle官方说明)。
4:字节流的使用。
IO流,(输入流,输出流)
字节流,字符流.
1、字节流。
InputStream/OutputStream
InputStream 抽象了应用程序读取数据的方式。
OutputStream 抽象了应用程序写出数据的方式。
2、EOF = End 读到 -1 就读到结尾。
3、输入流基本方法
int b = in.read(); 读取一个字节无符号 填充到 int 低 八位 , -1是EOF。
in.read(byte[] buf); 读取数据填充到 字节数组 buf
in.read(byte[] buf,int start,int size);
4、输出流基本方法。
out.write(int b); 写出一个byte 到 流,b的 低8位。
out.write(byte[] buf) 将buf字节数组都写入到流。
out.write(byte[] buf , int start,int size)
5、FileInputStream ---> 具体实现了在文件上读取数据
6、FileOutputStream 实现了向文件中写出byte数据的方法。
7、DataOutputStream/DataInputStream
对“流”功能的扩展,可以更加方面的读取 int,long, 字符等类型数据。
DataOutputStream
writeInt()/writeDouble()/writeUTF()
8、BufferedInputStream&BufferedOutputStream
这两个流类位 IO提供了带缓冲区的操作,一般打开文件进行写入,
或读取操作时,都会加上缓冲,这种流模式提高了IO的性能。
从应用程序中把输入放入文件,相当于将一缸水倒入另一缸中。
FileOutputStream--->write() 方法相当于一滴一滴的把水“转移过去”
DataOutputStream--->writeXxx() 方法会方便些,相当于一瓢一瓢把水“转移”过去。
BufferedOutputStream--->write方法更方便,相当于一瓢一瓢先放入桶中,再从桶中倒入到另一个桶中。
5、字符流。
1、编码问题。
2、认识文本和文本文件。
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)
文件是byte byte byte...的数据序列。
文本文件是文本(char)序列按照某中编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果。
3、字符流(Reader Writer)
字符的处理,一次处理一个字符。
字符的底层任然是基本的字节序列。
字符流的基本实现
InputStreamReader 完成byte流解析为char流,按照编码解析
OutputStreamWriter 提供char流到byte流,按照编码处理
FileReader/FileWriter
字符流过滤器
BufferedReader ---> readLine 一次读一行
BufferedWriter ---> PrintWriter 写一行
6、对象的序列化和反序列化
1、对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化
2、序列化流(ObjectOutputStream)是过滤流
反序列化流(ObjectInputStream)---readObject
3、 序列化接口(Serializable)
对象必须是新序列化接口,才能进行序列化,否则将出现异常。
这个接口,没有任何方法,只是一个标准。
4、transient关键字
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException,ClassNotFoundException
分析ArrayList源码
5、序列化中子类和父类构造函数的调用问题
JAVA—IO操作的更多相关文章
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
		
FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...
 - Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
		
学习目标 掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...
 - Java IO操作:合并流
		
合并流:把两个文件合并在一起. 主要操作的是内容. 定义: public class SequenceInputStreamextends InputStream 方法摘要: 操作步骤: 1,分别建立 ...
 - JAVA IO操作:数据操作流:DataOutputStream和DataInputStream
		
掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的 ...
 - java IO操作,看完你应该就清晰了。
		
前言: java中IO里的一些知识对于一个java新手来说,是比较难理解的.因为里面存在一些很绕的概念,比如: 1.到底是读入写出,还是读出写入: 2.我要将一个文件的内容拷贝到另一个文件是先用Inp ...
 - java IO操作和计算操作:工作内存和主内存 volatile关键字作用;原子操作对象AtomicInteger ....
		
应该停止但无法停止的计算线程 如下线程示例,线程实例中while循环中的条件,在主线程中通过调用实例方法更新后,while循环并没有更新判断变量是否还成立.而是陷入了while(true)死循环. i ...
 - Java IO操作
		
转自:http://www.cnblogs.com/jyan/articles/2505791.html Johnny Yan的博客 1 InputStream类型 InputStream的作用是标志 ...
 - 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结
		
往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...
 - Java io 操作
		
package tlistpackage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFou ...
 
随机推荐
- 版本控制器svn详细
			
2 svn介绍 2.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大 解决代码冲突困难 容易 ...
 - js 实现图片上传 续
			
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
 - 【转】mac os、linux及unix之间的关系
			
mac os.linux及unix之间的关系 unix 是由贝尔实验室开发的多用户.多任务操作系统 linux是一类Unix操作系统的统称,严格来说,linux系统只有内核叫“linux”,而li ...
 - c语言实现常见字符串函数strchr strstr strcmp atoi itoi(字符串换成整数)
			
好久没有更新博客了,刚刚出炉练练手的程序如下,很简单,没有考虑过多复杂的东西,有好的想法,欢迎指教: 字符查找函数: char *my_strchr(const char *s,int c) { ch ...
 - python  字符串报错问题
			
http://jingyan.baidu.com/article/25648fc1a96dd49191fd00c0.html 解决'ascii' codec can't encode characte ...
 - 并发之CAS无锁技术
			
CAS算法即是:Compare And Swap,比较并且替换: CAS算法存在着三个参数,内存值V,旧的预期值A,以及要更新的值B.当且仅当内存值V和预期值B相等的时候,才会将内存值 ...
 - Python3 abs() 函数
			
Python3 abs() 函数 Python3 数字 描述 abs() 函数返回数字的绝对值. 语法 以下是 abs() 方法的语法: abs( x ) 参数 x -- 数值表达式,可以是整数,浮 ...
 - gradle 构建测试
			
以后决不能再犯此类低级错误
 - sqlserver 开窗函数Over()的使用
			
利用over(),将统计信息计算出来,然后直接筛选结果集 declare @t table(ProductID int,ProductName varchar(20),ProductType varc ...
 - Golang之json序列化(struct,int,map,slice)
			
老规矩,直接上代码 package main import ( "encoding/json" "fmt" ) //把结构体都改小写 type User str ...