1 IO流的分类
第一种分类 :输入流 , 输出流
第二中类: 文件流,管道流,网络流
2 java中的一次流的操作创建的资源: java中的流对象 ,操作系统产生的流资源 。
所以在使用流结束后,需要调用close()。因为java的垃圾处理器只会回收java虚拟机中创建的java流对象,对于操作系统产生的流资源则不会回收。
3 输入和输出是对应用程序而言的。
InputStream 所有输入流的抽象
方法摘要 | |
---|---|
int | available() 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 |
void | close() 关闭此输入流并释放与该流关联的所有系统资源。 |
void | mark(int readlimit) 在此输入流中标记当前的位置。 |
boolean | markSupported() 测试此输入流是否支持 mark 和 reset 方法。 |
abstract int | read() 从输入流中读取数据的下一个字节。 |
int | read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 |
int | read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。 |
void | reset() 将此流重新定位到最后一次对此输入流调用 mark 方法时的位置。 |
long | skip(long n) 跳过和丢弃此输入流中数据的 n 个字节。 |
OutputStream 所有输出流的抽象
方法摘要 | |
---|---|
void | close() 关闭此输出流并释放与此流有关的所有系统资源。 |
void | flush() 刷新此输出流并强制写出所有缓冲的输出字节。 |
void | write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。 |
void | write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 |
abstract void | write(int b) 将指定的字节写入此输出流。 |
4 文件输入输出流
FileInputStream
FileOutputStream
举例说明
public class DemoFileIOStream
{
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
// 写入数据到文件中
FileOutputStream out = new FileOutputStream("out.txt");
out.write("www.baidu.com".getBytes());
out.close();
// 读取文件中的数据到程序中
File f = new File("t1.txt");
FileInputStream in = new FileInputStream(f);
byte[] buf = new byte[1024];
int len = in.read(buf);
in.close();
System.out.println(new String(buf,0,len));
}
}
5 二进制文件和文本文件的区别
0-255 之间的字符组成的文件是文本文件。
文本文件以外的文件是二进制文件。
5.1 文本文件操作类 Reader 和 Writer
字符操作流 FileReader 和 FileWriter 这两个类主要用于文本文件流的操作
举例说明:
public class DemoReaderAndWriter
{/**
* @param args
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
FileWriter fw = new FileWriter("fw.txt");
fw.write("十一放长假了");
fw.close();
FileReader in = new FileReader("fw.txt");
char[] buf = new char[1024];
int len = in.read(buf);
in.close();
System.out.println(new String(buf,0,len));
}}