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:写入数据的目的地

目录
相关文章
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
36 1
|
1月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
82 1
|
1月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
48 0
|
2月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
1月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
37 0
|
2月前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
47 2