输入输出处理
-
I/O流概述
一般分为输入流(Input Stream)和输出流(Output Stream) 两类。输入流:数据提供者,可从中读取数据出来。 输出流:数据接收者,可往其中写数据。
-
字节流 —— 基类:InputStream
java中每一种字节流的基本功能依赖于基本类InputStream和OutputStream,它们是抽象类,不能直接使用。2.1 **InputStream类的方法:** read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过的位置 markSupport():是否支持标记和复位操作 close():关闭流 2.2 **OutputStream类的方法:** write(int b):将一个整数输出到流中(只输出低位字节,为抽象方法) write(byte b[ ]):将字节数组中的数据输出到流中 write(byte b[],int off , int len):将数组b中从off指定的位置开始,长度为len的数据输出到流中 flush():刷空输出流,并将缓冲区中的数据强制送出 reset():返回标记过的位置 close():关闭流
3.文件流 —— 对文件的操作
3.1 在I/O处理中,最常见的就是对文件的操作:
用于读写本地文件系统中的文件
FileInputStream,FileOutputStream
描述本地文件系统中的文件或目录
File,FileDescriptor
接口,主要用于实现文件名查找模式的匹配
FilenameFilter
提供对本地文件系统中文件的随机访问支持
RandomAccessFile
3.2 文件流的构造方法:
FileInputStream(File f):打开一个以f 描述的文件作为输入
FileInputStream(String name):打开一个文件路径名为name的文件作为输入
FileOutputStream(File f):创建一个以f描述的文件作为输出,文件如果已经存在,则其内容被清空
FileOutputStream(String name):创建一个文件路径名为name的文件作为输出,文件如果已经存在,则其内容被清空
FileOutputStream(String name,Boolean append):创建一个文件路径名为name的文件作为输出,文件如果已经存在,则在该输出上输出的内容被接到原有内容之后
3.3 概念
File,File(Input/Output)Stream,RandomAccessFile是处理本地文件的类
Data(Input/Output)Stream是一个过滤流的子类,借此可以读写各种基本数据,在文件和网络中经常使用。如:readByte,writeBoolean等
Buffered(Input/Output)Stream适合与一个处理的输出作为另一个处理的输入的情况
4.代码事例—— 文件A到文件B的内容覆盖或内容追加
import java.io.*;
public class StreamDemo {
public static void main(String[] args) throws IOException {
// 这边直接调用
Filestream();
// cat();
}
/**
* 将A文件复制到B文件中(覆盖)
*/
public static void Filestream() throws IOException {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// inputStream
File inFile = new File("D:\\work\\java\\学习\\9.5\\file.txt");
fis = new FileInputStream(inFile);
System.out.println(fis + "shishi");
// outStream
File outFile = new File("D:\\work\\java\\学习\\9.5\\file2.txt");
fos = new FileOutputStream(outFile);
int c;
while ( (c = fis.read()) != -1){