Java IO流
来源:互联网 发布:进口数据 编辑:程序博客网 时间:2024/06/06 19:54
Source------->read--------->program------>write------->dest
流的分类:
按流的方向:
输入流:InputStream和Reader
输出流:OutputStream和Writer
按处理数据大小:
字符流:InputStream和OutputStream
字节流:Reader和Writer
按功能:
节点流:以上的都可以归为节点流,
处理流:在节点流的基础上对它进行处理。BufferedInputStream
所有IO操作都由以下步骤构成:
建立流、操作流、关闭流。
文件类File
File的构造方法有
public File(String pathname)创建一个与指定路径有关的File对象。
File类的方法:
boolean
canExecute()
测试应用程序是否可以执行此抽象路径名表示的文件。
boolean
canRead()
测试应用程序是否可以读取此抽象路径名表示的文件。
boolean
canWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。
int
compareTo(File pathname)
按字母顺序比较两个抽象路径名。
boolean
createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
staticFile
createTempFile(String prefix, String suffix)
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
staticFile
createTempFile(String prefix, String suffix, File directory)
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
boolean
delete()
删除此抽象路径名表示的文件或目录。
void
deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
boolean
equals(Object obj)
测试此抽象路径名与给定对象是否相等。
boolean
exists()
测试此抽象路径名表示的文件或目录是否存在。
File
getAbsoluteFile()
返回此抽象路径名的绝对路径名形式。
String
getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
File
getCanonicalFile()
返回此抽象路径名的规范形式。
String
getCanonicalPath()
返回此抽象路径名的规范路径名字符串。
long
getFreeSpace()
返回此抽象路径名指定的分区中未分配的字节数。
String
getName()
返回由此抽象路径名表示的文件或目录的名称。
String
getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回
null
。 File
getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回
null
。 String
getPath()
将此抽象路径名转换为一个路径名字符串。
测试此抽象路径名是否为绝对路径名。
boolean
isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean
isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
测试此抽象路径名指定的文件是否是一个隐藏文件。
long
lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
long
length()
返回由此抽象路径名表示的文件的长度。
String[]
list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
boolean
mkdir()
创建此抽象路径名指定的目录。
boolean
mkdirs()
String
toString()
返回此抽象路径名的路径名字符串。File类有两个常量:separator,和separatorChar用来返回操作系统平台有关的文件分隔符。
我们在程序中应该采用这样的编程风格:
“c:”+File.separator+"input.txt";
字节流:
低级字节流:
对二进制文件进行读写操作:FileInputStream、FileOutputStream数据源是磁盘文件
对内存缓冲区中的字节数组进行读写操作:ByteArrayInputStream和ByteArrayOutputStream数据源是内存中的字节数组
对线程管道进行读写操作:PipedInputStream和PipedOutStream类,数据源是线程管道。
高级字节流:
过滤流类:提供额外功能,在将数据实际写入到输入流之前对输出进行预处理。或者在读取数据之后对输入进行后期处理。过滤流类都是抽象类FilterInoutStream和FilterOutputStream的子类。
缓冲流:BufferedInputStream和BufferedOutputStream,实现了带缓冲的过滤流
数据流:DataInputStream和DataOutputStream,可以用与计算机无关的格式读写
计数:LineNumberInputStream类,允许在翻译行结束符的基础上,维护一个计数器该计数器表明正在读取的是哪一行
推回输入流:PushbackInputStream类表示一个流允许从流中读取数据,然后在需要时推回该流。
打印输出流:PrintStream类,允许将基本类型数据打印输出到字符串流中,带有自动刷新功能。
对象流:
包括ObjectInputStream和ObjectOutputStream允许直接对对象执行读写操作。
合并:
SequenceInputStream类可以实现两个文件的合并操作。
1)字节缓冲流:
BufferedInputStream和BufferedOutputStream为字节流对象增加缓冲区功能。
因此创建它们需要首先创建字节流对象。
建议最后使用flush()将缓冲区中的数据全部写出目的流中,
FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个
FileInputStream
,该文件通过文件系统中的 File
对象 file
指定。FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个
FileInputStream
,该文件通过文件系统中的路径名 name
指定 2)数据流:
DataInputStream和DataOutputStream,可以用与计算机无关的格式读写Java的基本数据类型以及String对象。经过它们过滤就可以读写各种基本数据类型和字符串了。
3)字节打印输出流
字符流:
Reader与InputStream相似,用于从流中读取数据。
Reader的方法:
int read() 读取一个字符,并将其返回,读到末尾返回-1
Writer与OutputStream相似,用于向流中写入数据。
Writer的方法
void writer(int c) 将参数c的低16位组成的字符写入流中,
void writer(char[]buffer)将字符数组buffer中的字符写入流中
void flush() 刷新该输出流,并强制写出所有缓冲输出字节。
低级字符流:
对内存数组进行操作:CharArrayReader和CharArrayWriter,数据源为内存中的字符数组。
对内存中的String对象进行操作:StringReader和StringWriter,数据源为内存中的String对象
对线程管道进行操作:PipedReader和PipedWriter其数据源为线程管道
对文本进行读写操作:FileReader和FileWriter,数据源为磁盘文件。
高级字符流:
缓冲流:BufferedReader和BufferedWriter
转换流:用于字节数据到字符数据的转换 InputStreamReader和OutputStreamWriter
打印输出流:PrintWriter运行将基本数据类型数据打印输出到字符串流中自带Flush功能。
缓冲流
BufferedReader类提供了readLine()方法,可以一次读入一行字符。以字符串形式返回。如果独到文件末尾返回null,它提供了newLine方法,写入一个行分隔符。
转换流
InputStreamReader用于将一个字节流中的字节转换为字符。OutputStreamWriter用于将写入的字符转换成字节后写入字节流。
对象流:
最高级的也是最自然的读写是基于对象的读写。由ObjectInputStream、ObjectOutputStream提供。他俩之所以能够完成基于对象的读写,是因为Java提供了一套对象序列化机制。
序列化机制:就是一套向流写入或读取对象数据的自动机制。这套机制将读写的实现封装在对象自身的实现中。
对象要想通过ObjectInputStream或者ObjectOutputStream进行读写,必须要让它的类实现java.io.Serializable 接口。
Serializable接口没有定义任何方法,它是一种标记接口。这种类型的接口仅仅用于标示它的实现类特征。
要想对象的某个属性不被序列化需要用transient来修饰。
实现了Serializable接口的类可以被序列化输出。
不能被序列化输出的有:static属性、方法、加了transient修饰的属性。
0 0
- JAVA【IO一】IO流
- Java-IO-java的IO流
- java IO 流
- JAVA之IO流
- java IO(字符流)
- java的io流
- JAVA之IO流(
- JAVA 基础IO流
- JAVA 中的IO流
- Java IO 流学习
- JAVA 中的IO流
- Java IO流操作方法。。
- java io流总结
- 转]JAVA IO流
- JAVA IO流
- Java中的IO流
- JAVA IO 流操作
- 详述JAVA IO流
- win7怎样开启loopback接口(环回网卡)
- ios-使用树形结构导航模式
- 几个主流TCP/IP协议栈介绍
- MG网络技术运营
- 碰撞检测
- Java IO流
- LDAP分页查询
- [寒江孤叶丶的CrossApp之旅_08][入门系列]CASegmentedControl的简单介绍
- Oracle 12c及oracle sql developer登陆scott时都出现ORA-01017错误的解决方法
- 第一课(3)STM32_RCC
- ZOJ 3818 正则表达式
- JAVA设计模式--简单工厂模式
- CodeForces 433C Ryouko's Memory Note(暴力加中位数)
- 修改UIButton