Java之IO流使用

简介: 1.2 文件流(1)文件在程序中是以流的形式来操作的(2)流:数据在数据源(文件)和程序(内存)之间经历的路径①输入流:数据从数据源(文件)到程序(内存)的路径②输出流:数据从程序(内存)到数据源(文件)的路径

Java之IO流使用



IO流

1.文件

1.1 什么是文件

1.2 文件流

1.3 文件常用操作方法

1.4 获取文件相关信息

1.5目录的操作

2.IO流原理及分类

2.1 IO流原理

2.2 流的分类

3.字节输入流InputStream

3.1文件字节输入流FileInputStream

4.字节输出流OutputStream

4.1文件字节输出流FileOutPutStream

5.字符输入流Reader

5.1文件字符输入流

6.字符输出流Writer

6.1文件字符输出流


1.文件


1.1 什么是文件

文件就是保存数据的地方


1.2 文件流

(1)文件在程序中是以流的形式来操作的

(2)流:数据在数据源(文件)和程序(内存)之间经历的路径

①输入流:数据从数据源(文件)到程序(内存)的路径

②输出流:数据从程序(内存)到数据源(文件)的路径


8ced9102ae864dac8bebc7410e72f733.png


1.3 文件常用操作方法


(1)new File(String pathname) //根据路径创建一个File对象

(2)new File(File parent,String child) //根据父目录文件+子路径创建

(3)new File(String parent,String child) //根据父目录+子路径创建


//(1)new File(String pathname) //根据路径创建一个File对象
 File file = new File("D:\\aaa.txt");
    try {
        file.createNewFile();
        System.out.println("文件创建成功了");
    } catch (IOException e) {
        e.printStackTrace();
    }
 //(2)new File(File parent,String child) //根据父目录文件+子路径创建
   File parentFile = new File("D:\\");
   String fileName = "bbb.txt";
   File file1 = new File(parentFile, fileName);
       try {
            file1.createNewFile();
            System.out.println("创建文件成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
// (3)new File(String parent,String child) //根据父目录+子路径创建
     String fileName2 = "ccc.txt";
     File file2 = new File("D:\\", fileName2);
        try {
            file2.createNewFile();
            System.out.println("创建文件成功");
        } catch (IOException e) {
            e.printStackTrace();
        }   


注意:这里的file对象,在Java程序中,只是一个对象。只有执行了createNewFile方法,才会真正的在磁盘上创建该文件


1.4 获取文件相关信息


File file = new File("D:\\aaa.txt");
        System.out.println("文件名字" + file.getName());
//                文件名字aaa.txt
        System.out.println("文件绝对路径" + file.getAbsolutePath());
//          文件绝对路径D:\aaa.txt      
        System.out.println("文件父级目录" + file.getParent());
//                文件父级目录D:\
        System.out.println("文件大小(字节)" + file.length());
//                文件大小(字节)12
        System.out.println("文件是否存在" + file.exists());
//        文件是否存在true
        System.out.println("是否为一个文件" + file.isFile());
//        是否为一个文件true
        System.out.println("是否为一个文件夹" + file.isDirectory());
//        是否为一个文件夹false


1.5目录的操作

(1)mkdir() 创建一级目录

(2)mkdirs() 创建多级目录


注意:在Java编程中,目录也被当最文件


String directoryPath = "D:\\a\\b";
        File file = new File(directoryPath);
        if (file.exists()){
            System.out.println(directoryPath+"已存在");
        }else {
            file.mkdirs();
        }
    }


2.IO流原理及分类


2.1 IO流原理


(1)I/O是Input/Output的缩写,用于处理数据传输。如读/写文件,网络通讯等。

(2)Java程序中,对于数据的输入/输出操作以”流(Stream)“的方式进行。

(3)java.io包下提供了各种”流“类和接口,用以获取不同种类的数据,并通过方法输入或输出数据。


2.2 流的分类


(1)按操作数据单位的不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件

(2)按数据流的流向不同分为:输入流、输出流

(3)按流的角色不同分为:节点流,处理流/包装流


9ddd77e3f2d8442c9e6dc5ec1530e7f5.png


3.字节输入流InputStream


fa4c1e21c60f4194a153ef66ac778004.png


(1)void close() :关闭此输入流并释放与该流关联的所有系统资源。

(2)abstract int read():从输入流中读取数据的下一个字节。

(3)int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。

(4)int read(byte[] b, int off, int len) : 将输入流中最多 len 个数据字节读入 byte 数组。


3.1文件字节输入流FileInputStream


构造方法:

(1)FileInputStream(File file)

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。

(2)FileInputStream(String name)

通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。


4.字节输出流OutputStream


fc89e7cffcb8445dbcc0883f0c7ec310.png


(1)void close() :关闭此输出流并释放与此流有关的所有系统资源。

(2)void flush() :刷新此输出流并强制写出所有缓冲的输出字节。

(3)void write(byte[] b) :将 b.length 个字节从指定的 byte 数组写入此输出流。

(4)void write(byte[] b, int off, int len):将指定 byte 数组中,从 off索引 开始写入 len 个字节到此输出流。

(5)abstract void write(int b) : 将指定的字节写入此输出流。


4.1文件字节输出流FileOutPutStream


1.构造方法:

(1)FileOutputStream(File file): 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

(2)FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。

(3)FileOutputStream(File file, boolean append): 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

(4)FileOutputStream(String name, boolean append):创建一个向具有指定 name 的文件中写入数据的输出文件流。

boolean append:追加写开关

①true:创建对象不会覆盖源文件,继续在文件末尾追加写数据

②false:创建一个新文件,覆盖原文件


5.字符输入流Reader


646181c8965b47d6b653aa04e3dcd043.png


1.共性成员方法

(1)int read(): 读取单个字符。

(2)int read(char[] cbuf): 一次读取多个字符,将字符读入数组。

(3) abstract void close():关闭该流并释放与之关联的所有资源。


5.1文件字符输入流


1.构造方法摘要

(1)FileReader(File file)

在给定从中读取数据的 File 的情况下创建一个新 FileReader。

(2)FileReader(String fileName)

在给定从中读取数据的文件名的情况下创建一个新 FileReader。


6.字符输出流Writer


1.共性的成员方法

(1)abstract void close(): 关闭此流,但要先刷新它。

(2)abstract void flush(): 刷新该流的缓冲。

(3)void write(char[] cbuf): 写入字符数组。

(4)abstract void write(char[] cbuf, int off, int len)

写入字符数组的某一部分,off数组的开始索引,len写的字符个数

(5)void write(int c) : 写入单个字符。

(6)void write(String str): 写入字符串。

(7)void write(String str, int off, int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数


2.flush和close方法的区别:

(1)flush:刷新缓冲区,流对象可以继续使用

(2)close:先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。


6.1文件字符输出流


1.构造方法

(1)FileWriter(File file)

根据给定的 File 对象构造一个 FileWriter 对象。

(2)FileWriter(File file, boolean append)

根据给定的 File 对象构造一个 FileWriter 对象。

(3)FileWriter(String fileName)

根据给定的文件名构造一个 FileWriter 对象。

(4)FileWriter(String fileName, boolean append)

根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

参数:String filename,File file:写入数据的目的地

相关文章
|
1月前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件
|
18天前
|
Java Unix Windows
|
2天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
12 0
|
7天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
16 1
|
11天前
|
存储 Java
Java的`java.io`包包含多种输入输出类
Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
25 1
|
12天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
21 2
|
14天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作
|
18天前
|
存储 Java 数据库
[Java 基础面试题] IO相关
[Java 基础面试题] IO相关
|
19天前
|
缓存 Java API
Java NIO和IO之间的区别
NIO(New IO),这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
17 1
|
22天前
|
Java
Java基础教程(12)-Java中的IO流
【4月更文挑战第12天】Java IO涉及输入输出,包括从外部读取数据到内存(如文件、网络)和从内存输出到外部。流是信息传输的抽象,分为字节流和字符流。字节流处理二进制数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。File对象用于文件和目录操作,Path对象简化了路径处理。ZipInputStream和ZipOutputStream则用于读写zip文件。