欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java输入流与输出流

程序员文章站 2024-03-22 22:13:46
...

一、IO体系架构

Java输入流与输出流

二、File类

我们要操作文件,试问,我们是不是先把这个文件进行封装成一个对象,因为Java是面向对象的一门语言,只有把文件封装成对象,我们才能对文件有进一步的操作。那么这个File对象有哪些行为(操作)呢?

  1. public boolean exists( ) 判断文件或目录是否存在
  2. public String getName( ) 返回文件名或目录名
  3. public String getPath( ) 返回文件或目录的路径
  4. public void delete( ); 删除文件
  5. public boolean mkdir( ); 创建目录

注意,这只是对文件做一步处理,封装成对象,程序才能操作!

三、字节流

OutputStream与InputStream 类是抽象类,因此并不能实例化,是以字节为单位进行数据传输,因此,OutputStream与inputStream能操作很多类型的文件,比如:视频、音频、文件等。其实,OutputStream与InputStream 就是讲内存与硬盘之间打开一个管道,数据通过这个管道进行传输,进行读写数据。
Java输入流与输出流

1、InputStream

是将数据从硬盘读入程序(内存)。其子类为FileInputStream,通过这个子类进行读取数据。
道理就像从井里抽水的过程,其中水池相当于内存,InputStream有个行为是read()方法,当启动这个方法时,就像启动了发动机,进行抽水,而FilePutStream就像管道,将井与水池建立连接,建立连接时,是不是要明确从哪里抽水,故new FilePutStream(“路径”)。

2、OutputStream

是将程序(内存)中的数据写入硬盘。其子类为FileOutputStream,通过这个子类进行写取数据。
同上道理,只不过,这次水井相当于内存。OutputStream有个行为是Writer()方法,当启动这个方法时,就像启动了发动机,进行抽水,而FileOutputStream就像管道,将井与水池建立连接,建立连接时,是不是要明确将水抽到哪里去,故new FileOutputStream(“路径\文件”)。如果有同名文件,自动覆盖。不存在时自动建立。
抽水完毕后,水管里面是不是还存留的有水,这时我们可以启动OutputStream的另外一个行为flush()方法,进行冲水,把剩余的管子里面的水冲净。

三、字节流示例

public static void main(String[] args) {
        try {
            File file = new File("C:\\Users\\HP\\Desktop\\helloWord.txt");
            if (file.exists()){
                InputStream in = new FileInputStream(file);
                OutputStream out = new FileOutputStream("C:\\Users\\HP\\Desktop\\helloWord111.txt");
                byte[] buffer = new byte[1024]; //建立一个缓冲区
                int len = 0;
                while ((len=in.read(buffer))>0){
                    out.write(buffer,0,len);
                }
                out.flush();
                out.close();
                in.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }

    }

四、字符流

字符流以字符为单位传送数据,只能传送文本类型的数据。

1、FileReader

读取指定磁盘文件内容的实例

FileReader fr = new FileReader(“文件路径”);
char[] data = new char[23];         //定义char数组
int length = 0;
while((length = fr.read(data))>0){          //循环读取文件中的数据
    String str = new String(data,0,length);         //根据读取文件的内容创建String 对象
    System.out.println(str);                //输出读取内容
}
fr.close();                  

2、FileWriter

文件字符输出流继承了Writer类,提供了向文件输出的各种方法,数据通过文件字符输出流以字符为单位输出并保存到文件中。

public static void main(String[] args) {
        File file = new File("D://word2.txt");      //创建指定文件
        try {
        if(! file.exists()){
                file.createNewFile();               //如果指定文件不存在,新建文件
        }
        FileReader fr = new FileReader("D://word.txt");
        FileWriter fw = new FileWriter(file);               //创建FileWriter对象
        char[] data = new char[23];
        int length = 0;
        while((length = fr.read(data)) != -1){          //如果没有读到文件末尾
            fw.write(data );           //向文件写入数据
        }
        fr.close();                         //关闭流
        fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

相关标签: Java学习