IO中常用的方法

来源:互联网 发布:kmp算法next例题 编辑:程序博客网 时间:2024/06/08 17:36

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阶段的重点,也是后面做开发必须要掌握的!

0 0
原创粉丝点击