IO流是java中比较常用的知识点,也是非常重要的知识点,所以学号IO很重要!
IO流对象分类
Input输入: 读取文件
Output输出: 写文件
按照流对象操作的文件类型分
字节流, 操作的文件中的最小组成单元字节,操作1个字节,8个二进制
字符流, 专门用于操作文本文件,操作1个字符,16个二进制
字节流,可以操作什么文件,所有都可以, JDK1.0
字符流,只能操作文本文件,属于一种非常特殊的文件 JDK1.1
按照数据的流向分类
输出流,从Java程序中将输入输出到一个目的中,写文件
输入流,Java一个数据源读取数据到Java程序中,读文件
归类:
字节输出流: 写任意文件
字节输入流: 读取任意文件
字符输出流: 写文本文件
字符输入流: 读取文本文件
IO对象中的四大抽象基类
字节输出流: 最高父类 OutputStream
字节输入流: 最高父类 InputStream
字符输出流: 最高父类 Writer
字符输入流: 最高父类 Reader
OutputStream字节输出流,写文件
这个父类方法都是写的方法 write
write(int b) 写1个字节
write(byte[] b)写字节数组
write(byte[] b,int offset,length)写字节数组一部分,开始索引,写几个
close()关闭此流,释放所有操作系统资源
InputStream字节输入流,读取文件
这个父类方法都是读的方法 read
int read()读取1个字节
int read(byte[] b)读取字节数组,从流中读取的字节存储到数组中
int read(byte[] b,int offset,int length)读取字节数组一部分,从流中读取指定个数的字节,存储到数组中
close()关闭此流,释放所有操作系统资源
Writer字符输出流,写文本文件
这个父类方法都是写的方法 write
write(int c)写1个字符
write(char[] cbuf)写1个字符数组
write(char[] cbuf,int offset,int length)写字符数组一部分,开始索引,写几个
write(String s)写字符串
write(String s,int offset,int length)写字符串的一部分,开始索引,写几个
flush()刷新该流缓冲,字符输出流写数据,必须要刷新
close()关闭此流,释放所有操作系统资源,先刷新
Reader字符输入流,读取文本文件
这个父类方法都是读取的方法 read
int read()读取1个字符
int read(char[] cbuf)读取字符数组,从流中读取的字符存储到数组中
int read(char[] cbuf,int offset,int length)读取字符数组一部分,从流中读取指定个数的字符,存储到数组中
close()关闭此流,释放所有操作系统资源
下面上几个实例:
实例1:
package io;
import java.io.*;
public class FileInputStreamTest {
public static void main(String[] args) throws IOException{
//新建一个获取类
FileInputStream fis = null;
try{
//在c盘下新建一个hello.txt的文件
fis = new FileInputStream("c:\\hello.txt");
byte[] arr = new byte[1024];
int n = 0;
while((n = (fis.read(arr))) != -1){
System.out.println(new String(arr,0,n));
}
}
//对运行中可能存在的异常进行提示
catch(IOException ex){
ex.printStackTrace();
throw new RuntimeException("文件读取失败!");
//finally是不管什么情况下都是要走的
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException ex){
ex.printStackTrace();
throw new RuntimeException("关闭失败");
}
}
fis.close();
}
}
实例2:
//简单的文件复制功能
package cn.itcast.copy;
import java.io.*;
public class CopyText {
public static void main(String[] args) {
//定义出2个流对象的变量,不要new
FileInputStream fis = null;
FileOutputStream fos = null;
try{
//创建流对象
fis = new FileInputStream(“d:\abc.txt”);
fos = new FileOutputStream(“c:\abc.txt”);
//循环,读取数据源,读取1个字节,写1个字节
int len = 0 ;
while( ( len = fis.read()) !=-1){
fos.write(len);
}
}catch(IOException ex){
ex.printStackTrace();
throw new RuntimeException(“文件复制失败”);
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException ex){
throw new RuntimeException(“资源关闭失败”);
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException ex){
throw new RuntimeException(“资源关闭失败”);
}
}
}
}
}
以上是对IO流中的一些重点的一些总结,希望对刚开始学习IO流的人有些帮助,这些都是IO阶段的重点,也是后面做开发必须要掌握的!