java的IO流

Java四大IO抽象类

Input Stream/OutputStream(字节的)和Reader/Writer(字符的)类是所有io流类的抽象父类

InputStream

此抽象类是字节输入流的所有类的父类。InputStream是一个抽象类,不可以实例化,数据读取需要由它的子类来实现,根据节点不同,派生了不同的节点流子类。
继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit)

常用方法:int read():读取一个字节的数据,并将字节的值作为int类型返回。
未读出字节返回-1(返回值为-1表示读取结束)
void close():关闭输入流对象,释放相关系统资源

OutputStream

此抽象类表示字节输出流的所有类的父类。输出流接受输出字节并将这些字节发送到某个目的地

常用方法:
void write(int n):向目的地中写入一个字节。
void close():关闭输出流对象。

Reader

Reader用于读取的字符流抽象类,数据单位为字符。
int read():读取一个字符的数据,并将字符的值作为int类型返回(0-65535之间的一个值)。返回值为-1表示读取结束。
void close():关闭流对象

write

Writer 用于输出的字符流抽象类,数据单位为字符
void write(int n): 向输出流中写入一个字符
void close():关闭输出流对象,释放资源。

字符流和字节流的区别

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
字节流转换成字符流可以用 InputSteamReader OutputStreamWriter

public class SecondStream {
    public static void main(String[] args) {
        //创建File Input Stream的对象fis
        FileInputStream fis=null;
        //由于可能出现异常,要用try catch finally 代码块
        try{
            fis =new FileInputStream("d:/b.txt");
             //创建的StringBuffer对象sb,用来存储文本中字符形式,使用append方法,加入每个(char)强转的字符
            StringBuffer sb=new StringBuffer();
            //操作io流常用的方法,用循环判断是否读取值为-1来判定是否读取结束,循环读入
            int temp =0;
            //while循环判断是否返回-1来断定读取完毕与否
            while((temp=fis.read())!=-1){

                System.out.println(temp );
                sb.append((char) temp);
            }
            //toString 方法
            System.out.println(sb.toString());
        }catch (Exception e){
            e.printStackTrace();
        }finally {

            try{
                if(fis!=null){
                    fis.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

File类

File类是java提供的针对磁盘中的文件或者目录转换对象的包装类。一个File对象可以代表一个文件或者目录,File对象可以实现获取文件和目录属性等功能,实现对文件和目录的创建、删除等功能。

File类针对文件操作的方法

createNewFile() //创建新文件。

delete() //直接从磁盘上删除

exites() //查询磁盘中的文件是否存在

getAbsolutePath() //获取绝对路径

getPath() //获取相对路径

getName() //获取文件名 相当于调用了一个toString 方法

isFile() //判断是否是文件

length() //查看文件中的字节数

isHidden() //测试文件是否是隐藏文件

针对目录操作的方法

exists() //查询目录是否存在

isDirectory() //判断当前路径是否为目录

mkdir() //创建目录

getParentFile() //获取当前目录的父级目录

list() //返回一个字符串数组,包含目录中的文件和目录的路径名

listFiles //返回一个File数组,表明用此抽象路径名表示的目录中的文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好...
    navy_legend阅读 728评论 0 0
  • java IO流学习总结 近期学习了Java的IO流,尝试着总结一下。 java.io 包下的IO流很多: 其中,...
    java萌新小白阅读 626评论 0 0
  • 一、IO流整体结构图 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称...
    慕凌峰阅读 1,205评论 0 12
  • 流的概念 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序...
    浅蓝色的麻吉阅读 341评论 0 1
  • Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是...
    dazzlingly阅读 1,364评论 0 15