Java XML和IO流

第七章  XML和Io处理
一.File类
File类位于java.io包下,代表与平台无关的文件和目录。
作用:可以只用File来对文件或目录进行:创建,删除,重命名。
1.访问文件和目录
a.创建file实例
(1)File(String pathname) :通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
(2)File(File parent, String child) : 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
java中,反斜杠“\”是转意字符
windows目录的分割符:\\(表示绝对路径)
Linux目录的分割符:/(表示绝对路径)
File.separator//自动获取不同系统的分隔符
b.文件操作相关方法
(1)createNewFile();创建文件。boolean类型
(2)delete();删除文件。boolean类型
(3)createTempFile(String prefix,String suffix):创建一个临时文件,文件名有前缀prefix,系统生成随机数和后缀有suffix制定。
(4)deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
(5)createTempFile(String prefix, String suffix, File directory) :directory返回该创建的对象
c.文件检测相关方法
(1)exists();判断File对象的文件或目录是否存在。boolean类型。
(2)isDirectory() 判断File对象表示的文件是否是一个目录。boolean类型。
(3)isFile(): 判断File对象表示的文件是否是一个标准文件,而不是目录。boolean类型
(4)canRead(): 判断File对象对应的文件或目录是否可读。
(5)canWrite:判断File对象对应的文件或目录是否可写。
d.访问文件名相关方法
(1)getPath();返回当前文件的路径名称。String类型
(2)getAbsolutePath();返回当前File对象对象的绝对路径
(4)getParent() :返回当前File对象对应的目录(最后一级子目录)的父级目录。
(5)renameTo(File dest) :重命名。如果成功返回true,否false


f.获取常规文件信息
(1)lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。Long类型
(2)length() ;返回由此抽象路径名表示的文件的长度。Long类型
g.目录操作相关方法
(1)mkdir() 创建一个空文件夹
(2)list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。String[] list();
(3)listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录和文件。File[] listFiles();
2.文件过滤
a.实现FilenameFilter接口
b.重写accept()方法
boolean accept(File dir,
               String name)测试指定文件是否应该包含在某一文件列表中。 


参数:
dir - 被找到的文件所在的目录。
name - 文件的名称。 
返回:
当且仅当该名称应该包含在文件列表中时返回 true;否则返回 false。




二.Io流的概述
a.java的IO流是实现输入/输出的基础。是对数据输入输出的操作。
流分为:字节流,字符流
(1).java中,处理字节流的两个基础类:
InputStream输入流
OutputStream输出流
(2).java中,处理字符流的两个基础类
Reader读
Writer写
b.流的分类
(1)输入流,输出流
InputStream输入流:只能从数据中读取数据
OutputStream输出流:只能从中写入数据
为了解决Unicode字符串
Reader读
Writer写
(2)节点流和处理流
节点流:可以向磁盘读写数据的流。(低级流)
处理流:通过所封装的流的功能调用实现数据读写功能的流。(高级流)


三.InputStream和OutputStream
InputStream和OutputStream是抽象类,提供了输入/输出处理的基本接口。读写方式以字节为单位进行/
a.inputStream
方法:
(1)int read();读取一个字节,并将它返回。如果遇到源的末尾,返回为-1;
(2)int read(byte[] b) :将数据读入一个字节数组,同时返回读取的字节数。如果遇到源的末尾,返回为-1;
(3)int read(byte[] b, int off, int len);
参数:
b - 读入数据的缓冲区。(读入一个字节数组)
off - 数组 b 指定位置开始。
len - 要读取的最大字节数。
如果遇到源的末尾,返回为-1;
其他方法
(4)void close();用于关闭流
(5)long skip(long n);在输入流跳过几个字节,将实际跳过的字节数返回,如果流的实际长度小于n的值,则返回的值将小于n;
(6)boolean markSupported() ;用于判断该流时候支持标记功能。如果此输入流实例支持 mark 和 reset 方法,则返回 true;否则返回 false。
(7)void mark(int readimit):在支持标记的输入流的当前位置设置一个标记。如果从流中读取的字节数多余readlimit中设置的值,就允许标记。
(8)void reset();返回到流的上一个标记。以后再次调用read()方法,将会重读那些数据。
1.低级InputStream类(节点流)
ByteArrayInputStream:为读取字节数组设计的流,允许内存的一个缓冲去当作inputstream使用
PipedInputStream ;管道流,产生一份数据。能被写入相应的PipedOutputStream
FileInputStream;用于读取文件中的信息。用于读取二进制数据
2.高级InputStream类(处理流)
DataInputStream:他是FilterInputStream抽象类的子类
BufferedInputStream:提供内部缓冲功能的字节刘。避免了每次需要数据是都必须进入读取,减少对系统资源的读写。
3.InputStream和他的派生类的层次




b.OutputStream
方法:
void write(int c);写有一个字节到流中;
void write(byte[] b);将字节数组中的数据写入流中;
void write(byte[] b,int off,int len);将字节数组中从off开始的len字节写入到流中;
其他方法
void close();关闭输出流
void flush();将缓冲中的字节立即发送到流中。同时晴空;
低级OutputStream
ByteArrayOutputStream:按字节数组方式来向设备写出字节的类
PipedOutputStream ;管道输出,跟PipedInputStream对应
高级OutputStream
DataOutputStream;他是FileOutputStream的字类;
BufferedOutputStream;提供具有内存缓冲能力的字节流
e.OutInputStream和其他派生类的层次


四.FileInputStream和FileOutputStream
Java中提供了FileInputStream和FileOutputStream用于从文件中读取信息和向文件中写入信息。
他们分别是:InputStream和OutputStream的直接子类;
如果找不到文件会产生:FileNotFoundException


五.高级字节流
高级字节流对低级流进行了封装,并有许多功能的扩展。
几种高级字节流
1.FilerInputStream 和FilterOutputStream
他们是inputStream的子类;重写了父类中的所有方法;并提供了对流进行输入输出的一系列接口;
2.BufferedInputStream 和 BufferedOutputStream
a.他们是FilerInputStream 和FilterOutputStream的子类
b.实现缓冲的数据流,在读写的同时对数据惊醒缓冲,这样可以避免每次读写或发送数据是都需要进行读写的操作;


3.DataInputStream 和DataOutputStream
特点:可以用于与计算机无关的格式读写Java的基本数据类型和String类;
a.他们是FilerInputStream 和FilterOutputStream的子类
b.读写方式
读:以read开头:readByte();readDouble();等等
写:以write开头:writeByte();writeDouble();等等




六.其他高级流
1.pushbackInputStream 包括一个字节的缓冲区;是的在读取数据是可以预取写一个字节;
2.LineNumberInputStream 可以在读取的同时记录读取的行数
3.PrintStream 以格式话的方式打印所有的基本数据类型和String对象。主要用于数据的展示;
七.Reader和Writer
Reader和Writer处理的是字符类型的数据
与InputStream和OutputStream不同在于处理流的方式以字符为单位进行;
1.Reader
Reader与InputStream相同;用于读取数据;
a.读取数据
(1)int read();用于从流中读出一个字符。将其返回
(2)int read(char[] buffer);从流中读出的字符放到字符数组buffer中。
(3)int read(char[] buffer,int off, int len);将速出的字符放到字符数据buffer中。off为开始的空间。每次最多独处len个字符;
b.其他方法
(1)void close();关闭流
(2)boolean ready();判断流是否已经准备好被读取
(3)void markSupported()(int readAheadLimit);用于判断该流时候支持标记功能。如果此输入流实例支持 mark 和 reset 方法,则返回 true;否则返回 false。
(4)void mark(int readimit):在支持标记的输入流的当前位置设置一个标记。如果从流中读取的字节数多余readlimit中设置的值,就允许标记。
(5)void reset();返回到流的上一个标记。以后再次调用read()方法,将会重读那些数据。

c.低级Read类
CharArrayReader;跟ByteArrayInputStream类似;区别在于它处理的是字符
SringReader;用于读取数据源是一个字符串的源;
PipeReader;与PipeInputStream类似,区别在于它处理的是字符
FileReader;用于读取一个字符文件的类
d.高级Read类
BufferedReader:与BufferedInputStream类似;区别在于它处理的是字符
InputStreamReader:它是字节刘和字符类之间的桥梁;读出字节并且将其按照指定的编码方式转行成字符
LineNumberRead;他可以逐行读取数据;
e.Reader和其他拍摄类脂见的层次



































































































































































































































发布了27 篇原创文章 · 获赞 28 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/u012399175/article/details/46463079