目录 :
四大基类:
InputStream(字节输入流)
OutputStream(字节输出流)
Reader(字符输入流)
Writer(字符输出流)
mark()和reset()方法详解:
mark()和reset()方法详解
JAVA中mark()和reset()用法的通俗理解
如何复制一个文件:
InputStream(字节输入流):基于FileInputStream实现;
操作步骤:
- 打开特定类型的输入流,可能会抛出FileNotFoundException 异常
FileInputStream inputStream=new FileInputStream();
- 读取数据操作,-1表示读取结束,可能会抛出IOException异常
int read=inputStream.read();
- 关闭流,可能会抛出IOException异常
inputStream.close();
读操作介绍:
- int read():
每次读取一个字节,返回的结果为对应字节的数据; - int read(byte[] arr):
批量读取数据,将数据读入到arr的byte数组中,返回值为int,表示读取的有效数据个数; - int read(byte b[], int off, int len):
批量读取数据,b表示的是数据读入的缓存地址,off表示读入缓存的起始位置,len表示从起始位置开始写入的字节数量,返回值表示读取数据有效个数;
整体代码演示:
package IOdemo.IO;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamDemo {
public static void main(String[] args) throws IOException {
//打开特定的流,可能会抛出异常,
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("E:\\javaSource2\\javacod\\20181121\\fos.txt");
byte [] bytes=new byte[6];
int num=0;
while((num=fileInputStream.read(bytes))!=-1){
//读取整个文本数据
System.out.print(new String(bytes,0,num));
}
}catch (IOException e){
e.printStackTrace();
}finally {
try {
//可能上面也发生异常了,但是我们不知道是在创建的时刻还是在读取的时刻,
//所以需要判断流有没有被创建
if(fileInputStream!=null)
fileInputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
fileInputStream.available();//得到流的大小
fileInputStream.skip(2);//对数据源进行跳跃读取
fileInputStream.mark(2);//标记此字节
fileInputStream.markSupported();//当前系统是否支持mark操作,
}
}
OutputStream(字节输出流):基于FileOutputStream实现;
操作步骤:
- 打开字节输出流,可能会抛出FileNotFoundException异常
String path = "/Users/gongdezhe/Desktop/test.txt";
//写操作时,文件不存在,会自动创建文件,并写入数据
//当文件目录路径不合法是则会抛出异常
FileOutputStream outputStream = new FileOutputStream(path);
- 写操作,可能会抛出IOException异常
outputStream.write(int b); //每次写入一个字节
outputStream.flush(); //刷新缓存
- 关闭流,可能会抛出IOException异常
outputStream.close();
方法介绍:
- void write(int b): 每次写入一个字节;
- void write(byte b[]): 批量写入,写入类型为byte[];
- void write(byte b[], int off, int len): 批量写入,可以自定义从byte数组的起始和读取长度;
- void flush(): 刷新缓存;
具体实现演示
package IOdemo.IO;
import java.io.*;
public class OutputStreamDemo {
public static void main(String[] args) {
//File file=new File("Output"); //直接创建一个新文件写入
FileOutputStream fileOutputStream=null;
try{
//fileOutputStream=new FileOutputStream(file);
fileOutputStream=new FileOutputStream
("E:\\javaSource2\\javacod\\20181121\\Output");
//打开文件,如果没有此文件,会创建此文件
fileOutputStream.write(97); //文件显示为对应字符
//void write(int b) 每次写入一个字节
byte [] bytes=new byte[]{
'a','b','c'};
fileOutputStream.write(bytes)