`
- 浏览:
6423 次
- 性别:
- 来自:
深圳
-
IO包summarize
以前学了Lang包还有Util(集合)包,以前的lang(基础)包,不需要导入就可以使用,而util(集合)包就要导入,现在IO(输入输出流)也是要导入才能使用的,如果不导入,就会报错
IO流(input / output stream)
File类
代表与平台无关的文件和目录操作类
A:访问文件名相关的方法
String getName()返回此File对象所表示的文件名或路径名(最后一级的文件夹名)
String getPath()返回此File对象所对应的路径名(跟创建相关)
File getAbsoluteFile()返回此File对象所对应的绝对路径所对应的file对象
String getAbsolutePath()返回此File对象所对应的绝对路径名(完整路径)
String getParent()返回此File对象对应目录(最后一级子目录)的父目录名
B:文件检测相关的方法
boolean exists()判断File对应的文件或目录是否存在
boolean canWrite()判断File对象对应的文件或目录是否可写
boolean canRead()判断File对象对应的文件或目录是否可读
boolean isFile()判断File对象所对应的是否是文件,不是目录
boolean isDirectory()判断File对象所对应的是否是目录,不是文件
boolean isAbsolute()判断File对象所对应的文件或目录是否是绝对路径,在Windows等系统上,如果路径开头是盘符,则说明它是一个绝对路径
C:获取常规文件信息
long lastModified()返回文件的最后修改时间
long length()返回文件内容的长度
D:文件操作的相关方法
boolean createNewFile()当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,创建成功返回true,否则返回false
boolean delete()删除File对象所对应的文件或路径
static File createTempFile(String prefix,String suffix)在默认临时文件目录中创建一个临时的空文件,使用给定前缀,系统生成的随机数和给定后缀作为文件名
E:目录操作的相关方法
boolean mkdir()只能创建一个目录(文件夹)
boolean mkdirs()一次性可以创建多个目录(文件夹)
String [] list()列出File对象所有的子文件名和路径名,返回String数组
File [] listFiles()列出File对象的所有子文件和路径,返回File数组
static File[] listRoots()列出系统所有的跟路径,这是静态方法,可以直接调用
理解IO流
什么是流?
不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”,(stream);stream是从起源(source)到接收(sink)的有序数据
流的分类:
按照流的流向: 输入流和输出流
输入流:只能从中读取数据,而不能向其写出数据
输出流:只能向其写出数据,而不能从中读取数据
按照流的数据单位的大小不同:字节流和字符流
字节流:流动的数据最小单位是字节,也把字节流称为低级流
字符流:流动的最小单位是字符
按照流的功能分:节点流和处理流
节点流:可以从/向一个特定的IO设备(如磁盘,网络/读/写数据的流)称为节点流,节点流常常也称为低级流
处理流:对一个已存在的流进行连接或封装,通过封装后流来实现数据/读/写的功能,处理流也称为高级流
IO流的框架
字节流的父类(抽象类(Abstract))
InputStream:所有字节输入流的父类
OutputStream:所有字节输出流的父类
字符流的根类(抽象类)
Reader:所有字符流的输入父类
Writer:所有字符流的输出父类
InputStream(字节输入流)和Reader(字符输入流)
int read()从输入流中读取单个字节,返回所读取的字节数据(字节数据可以直接转换为int类型)
int read(byte[] b)从输入流中读取最多b.length个字节的数据,并将其存储在字符数组中,返回实际读取的字节数
int read(byte[] b,int off,int len)从输入流中读取最多len字节的数据,并将其存储在字节数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字节数
Reader的常用方法
1. int read()从输入流中读取单个字符
2.int read(char[] b)从输入流中读取最多b.length个字节的数据,并将其存储在字符数组中,返回实际读取的字符数
3.int read(char[] b,int off,int len)从输入流中读取最多len字节的数据,并将其存储在字节数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字符数
OutputStream和Writer
void write(int c)将指定的字节输出到输出流中
void write(byte[] b)将字节数组中的数据写人到指定输出流中
void write(byte[] b,int off,int len)将字节数组从off位置开始,长度为len,字节写人到输出流中
Writer的常用方法
1. void write(int c)将指定的字符输出到输出流中
2. void write(char [] b)将字符数组中的数据写人到指定输出流中
3. void write(char [] b, int off,int len)将字符数组从off位置开始,长度为len,字节写人到输出流中
常用方法:
void()关闭流
void mark(int readLimit)标记流
void reset()重新回到mark标记(将记录指针会退到mark标记处)
boolean markSupported()判断此输入流是否支持mark和reset方法
long skip(long n)可以跳过(放弃)n个数据字节
void flush()刷新此输出流并强制写出所有缓冲的输出字节
BufferedInputStream类和BufferedInputStream类
缓冲流的作用:增加缓冲功能,可以提高输入输出的效率
管道流(PipedInputStream(输入流)和PipedOutputStream(输出流))
作用:主要用于线程之间的通讯
DateInputStream和DateOutputStream
用于读/写基本数据类型和String对象
PushbackInputStream
void unread(byte [ ] b)回退一个字节数组
void unread(byte [ ] b, int off, int len)回退一个字节数组
void unread(int b)回退一个字节
对象序列化(重点)
什么是对象序列化?
把“对象”任一时刻的状态,保存到外部介质的过程就叫序列化
什么是对象反序列化
反序列化是从外部介质读取数据并将数据还原成当初的“对象”的状态
实现对象序列化
a:实现Serializeble标志接口(简单)
b:实现Externalizable接口(自定义序列化)
递归序列化
当对某个对象进行序列化时,系统会自动把该对象的所有属性依次进行序列化,如果某个属性引用到另一个对象,则被引用的对象也会被序列化,如果被引用的对象的属性也引用了其他对象,则被引用的对象也会被序列化,这种被称为递归序列化
对象引用序列化
Java序列化机制
a:所有保存到磁盘中的对象都有一个序列化编号
b:当程序试图序列化一个对象时,程序将先检查该对象是否已经被序列化过,只有当该对象从未被序列化过,系统才会将该对象转换成字节序列并输出
transient变量
transient变量在序列化时不会被保存,如果是对象反序列化后就是null,如果是本类型,就是int(0),boolean(false),double(0.0)
自定义序列化 (Externalizable接口中的两个序列化与反序列化的方法)
a. void readExternal(ObjectInput in)显示自定义序列化的方法,用来恢复数据
b.void writeExternal(ObjectOutput out)实现自定义序列化的方法
8. 两种序列化机制的比较
实现Serializable接口:
a. 系统自动存储必要信息
b. java内建支持,易于实现,只需实现接口即可
c. 无须任何代码支持,性能略差
实现Externalizable接口:
a. 程序员决定存储那此信息。
b. 仅仅提供两个空方法,实现该接口必须为两个空方法提供实现。
c. 性能略高。
9. 对象序列化注意问题
a. 对象的类名,属性都会被序列化;方法,static属性,transient属性都不
会被序列化
b. 反序列化时必须有序列化对象的class文件
c. 当通过文件,网络来读取序列化对象时,必须按实际写入的顺序读取
字符流:
转换流:InputStreamReader将字节输入流转换成字符输入流
OutputStreamWriter将字节输出流转换成字符输出流
作用:
转换成字符流操作更加方便一些
BufferedWriter
构造方法:
BufferedWriter(Writer out)构造一个默认大小的缓冲区输出流
BufferedWriter(Writer out,int size)指定一个具体大小的缓冲区输出流
1.void newLine()换行
BufferedReader
构造方法:
BufferedReader(Reader in)构造一个默认大小的缓冲字符输入流
BufferedReader(Reader in,int size)指定一个具体大小的缓冲字符输入流
LineNumberReader
1.String readLine()读取一个问本行
2.int getLineNumber()获得当前行号
3.void setLineNumber(int C)设置当前行号
CharArrayReader 和 CharArrayWriter
构造方法:CharArrayWriter()构建一个默认大小的字符输出流
CharArrayWriter(int size)创建一个指定大小的字符输出流
void reset()清空缓冲区
int size()返回缓冲区大小
void writeTo(Writer out)将缓冲区的内容写入另一个字符流
PrintStream(打印流)
构造方法:
PrintStream(File file)构建一个以文件为输出源的打印流,将信息打印到文件
PrintStream(OutputStream out)构建一个以输出流为源头的打印流,将信息打印到输出流,输出流可以是文件,终端(显示器),内存,网络
PrintStream(OutputStream out,boolean autoFlush)构建一个打印流,autoFlush如果为true,则每当写入字节数组,调用其中一个println方法或写入新行字符或字节(‘\n’)时,都会刷新缓冲区
PrintStream(String fileName)创建具有指定文件名称且不带自动行刷新的新打印流
什么是终端?
System.out代表输出到终端
常用方法:
PrintStream format(String format,Object … args)
参数format:用于指定输出格式:%d,%c,%f,%b,%s
%nd:n代表输出宽度
PrintStream print(String format,Object … args)
用于格式化输出,同上
PrintWriter类跟PrintStream都用于打印输出,一个操作字符,另一个操作字节
RandomAccessFile:随即访问文件流
既可以支持读的功能,也可以支持写的功能,支持“任意访问”的方式,可以直接转到文件的任意地方来读写数据
Long getFIlePointer()返回文件记录指针的当前位置
Void seek(long pas)将文件记录指针定位到pas位置
还有一系列的read()和write()方法
构造方法:
RandomAccessFile(File file,String mode)
RandomAccessFile(String name,String mode)
“Mode”参数:
“r”以只读方式打开指定文件,如果试图对该RandomAccessFile执行写入方法都将会抛出IOException异常
“rw”以读取、写入的方式打开指定文件,如果该文件不存在,则尝试创建新文件
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
JAVAIO流总结宝典,分享给大家,总结较为全面
IO流 javaio java 流
本人是初学者,在老师的指导下,将自身对Java中IO流的理解做成以下思维导图
java基础之IO流,基础简介知识,帮助你了解java的io技术
思维导图io流思维导图io流思维导图io流思维导图io流思维导图io流思维导图io流
map集合的特性和它的遍历方式 还有一个根据Set特性的一个排序 以及IO流 字节流和字符流实现代码
IO流文件的复制
关于java的IO流基础的练习,适合刚接触IO流,没有基础的同学
IO流
IO流的主要流
一,IO流的实现方式 1:用的是装饰模式,装饰模式有四个角色,分别是通用接口、本原、抽象装饰、 具体装饰,因为是将本原聚合到了装饰中,所以可以将本原或装饰通过构造子注入到 另一个装饰,多个装饰可以随意...
适用于刚学习过Java,尚未学习数据库的人,因为本程序要存储学生以及老师账户,需要用到IO流写的操作
该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容
Java中文件IO流.pdf 学习资料 复习资料 教学资源
自已写了一个JAVA IO流的增删改查操作, 算是对IO的总结吧,初学者可以看下!
IO流..
彻底明白Java的IO流
IO流读取和创建文件IO流读取和创建文件IO流读取和创建文件IO流读取和创建文件IO流读取和创建文件
JAVA教程 io流操作 JAVA教程 io流操作 JAVA教程 io流操作