java学习3
2015-08-26 14:30
405 查看
1.java中的编码问题
在用eclipse创建项目时,如果选择的编码方式是gbk,那么在将字符串>>字节时,默认情况下也是按照GBK的规则进行转换的,所以对于一个字符串按照utf-8编码规则获取的字节序列,还是按照默认条件转换,是会出现乱码的。
gbk(汉字2个字节,英文1个字节)
utf-8(汉字3个字节,英文1个字节)
java编码方式即utf-16be(汉字2个字节,英文2个字节)
2.File类
File对象中存放的是文件(文件夹)的名称,大小等一些属性信息
mkdir()//创建文件夹
createNewFile();//创建新文件
isExists()//是否存在
isFile()//是否是文件
isDirectory()//是否是文件夹
3.RandomAccessFile类
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。
RandomAccessFile支持随机访问文件,可以访问文件的任意位置
(1)java文件模型
在硬盘上的文件是byte byte byte存储的,是数据的集合
(2)打开文件
有两种模式”rw”(读写) “r”(只读)
RandomAccessFile raf = new RandomeAccessFile(file,”rw”)
文件指针,打开文件时指针在开头 pointer = 0;
(3) 写方法
raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
(4)读方法
int b = raf.read()—>读一个字节
(5)文件读写完成以后一定要关闭(Oracle官方说明)
4.字节流操作
FileOutputStream(write()方法)和FileInputStream(read()方法)
DataOutputStream和DataInputStream
BufferedOutputStream和BufferedInputStream
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),是过滤流—-writeObject
反序列化流(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)序列化中 子类和父类构造函数的调用问题
a)如果父类实现序列化接口,子类不需要再实现,并且在子类反序列化的时候,不会调用构造函数(子类和父类的都不会调用)
b)如果父类没有实现序列化接口,而子类想要完成序列化,子类必须实现序列化接口,这种情况下,在对子类反序列化时,不会调用子类的构造函数,但会调用父类的构造函数
在用eclipse创建项目时,如果选择的编码方式是gbk,那么在将字符串>>字节时,默认情况下也是按照GBK的规则进行转换的,所以对于一个字符串按照utf-8编码规则获取的字节序列,还是按照默认条件转换,是会出现乱码的。
gbk(汉字2个字节,英文1个字节)
utf-8(汉字3个字节,英文1个字节)
java编码方式即utf-16be(汉字2个字节,英文2个字节)
2.File类
File对象中存放的是文件(文件夹)的名称,大小等一些属性信息
mkdir()//创建文件夹
createNewFile();//创建新文件
isExists()//是否存在
isFile()//是否是文件
isDirectory()//是否是文件夹
3.RandomAccessFile类
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。
RandomAccessFile支持随机访问文件,可以访问文件的任意位置
(1)java文件模型
在硬盘上的文件是byte byte byte存储的,是数据的集合
(2)打开文件
有两种模式”rw”(读写) “r”(只读)
RandomAccessFile raf = new RandomeAccessFile(file,”rw”)
文件指针,打开文件时指针在开头 pointer = 0;
(3) 写方法
raf.write(int)—>只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
(4)读方法
int b = raf.read()—>读一个字节
(5)文件读写完成以后一定要关闭(Oracle官方说明)
4.字节流操作
FileOutputStream(write()方法)和FileInputStream(read()方法)
DataOutputStream和DataInputStream
BufferedOutputStream和BufferedInputStream
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),是过滤流—-writeObject
反序列化流(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)序列化中 子类和父类构造函数的调用问题
a)如果父类实现序列化接口,子类不需要再实现,并且在子类反序列化的时候,不会调用构造函数(子类和父类的都不会调用)
b)如果父类没有实现序列化接口,而子类想要完成序列化,子类必须实现序列化接口,这种情况下,在对子类反序列化时,不会调用子类的构造函数,但会调用父类的构造函数
相关文章推荐
- Java知识总结----Spring拦截器(六)
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- 69 Spring Interview Questions and Answers
- 【Java关键字-访问范围修饰符】private、protected、public和default的区别
- Struts2学习笔记《二》
- SpringMVC和Struts2的区别
- 解决eclipse中出现Resource is out of sync with the file system问题
- 【Java关键字-Interface】为什么Interface中的变量只能是 public static final
- 张孝祥java视频学习笔记(六)
- JAVA & JSON详解
- JAVA中的中文乱码问题
- 使用spring MVC和jdkAnnotation实现权限拦截
- springMVC学习笔记---文件的上传和下载
- 张孝祥java视频学习笔记(五)
- 通过spring来配置某个命令号和执行方法之间的映射
- java 源代码例子
- java 读excel包括不同版本读取,读合并单元格和读公式
- [leetcode-209]Minimum Size Subarray Sum(java)
- Eclipse无法引用项目依赖
- java byte数组与int,long,short,byte转换