【java学习—十二】io流(1)

编程入门 行业动态 更新时间:2024-10-24 14:24:16

【<a href=https://www.elefans.com/category/jswz/34/1770091.html style=java学习—十二】io流(1)"/>

【java学习—十二】io流(1)

文章目录

  • 1. 主要内容
  • 2. File类
  • 3. 练习题
  • 4. Java IO原理


1. 主要内容

java.io.File 类的使用(计算机操作系统中的文件和文件夹)

IO原理的分类。
IOinput和output

的解释:
    比如:通过程序把图片放到某一个文件夹的过程。先把图片转化为一个数据集合(例如二进制),把这些数据一点一点传到文件夹,这个传递过程就很类似于水的流动,我们就可以称这个整体的数据集合是一个数据流。
    
分为文件流缓冲流
    文件流:数据流的读写都是基于文件的操作
    FileInputStream / FileOutputStream / FileReader / FileWriter
    缓冲流:数据流的读写都是基于内存的操作
    BufferedInputStream / BufferedOutputStream / BufferedReader / BufferedWriter
    

转换流
    InputStreamReader / OutputStreamWriter
    
标准输入流 / 标准输出流
    打印流(了解)
    PrintStream / PrintWriter
    数据流(了解)
    DataInputStream / DataOutputStream
    
对象流 ---- 涉及序列化、反序列化:把一个对象转化为一个数据流进行读写
    ObjectInputStream / ObjectOutputStream
随机存取文件流:例如一个txt文件,其中有100行数据,可以直接读取第50行数据,也可以在第89行插入数据(具体哪一行,由开发人员决定),这个才是随机的概念。
    RandomAccessFile

2. File类

java.io.File 类:文件和目录路径名的抽象表示形式,与平台无关
File新建删除重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入 / 输出流。

File 对象可以作为参数传递给流的构造函数

File 类的常见构造方法:
    ①public File(String pathname)
    以 pathname 为路径创建 File 对象,可以是绝对路径或者相对路径,
    如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储。

    ②public File(String parent,String child)
    以 parent 为父路径, child 为子路径创建 File 对象。
    File 的静态属性 String separator 存储了当前系统的路径分隔符。在 UNIX 中,此字段为‘ /’ ,在 Windows 中,为‘ \\’

举例:

package day12;import java.io.File;public class Test {public static void main(String[] args) {File f = new File("D:\\test\\abc\\tt.txt");//这个时候对象f就是tt.txt文件File f1 = new File("D:\\test\\abc","\\tt.txt");//这个f1也是tt.txt文件,这种使用相对较少File f2 = new File("D:/test/abc/tt.txt");File f3 = new File("D:" + File.separator + "test/abc/tt.txt");//注意:\在文件中是路径的分隔符,但是在java编程中一个\的意思是转义符,在java中\\或者/才是文件的分隔符//也可以用File.separator作为文件的分隔符}
}

小节:

File 类代表与平台无关的文件和目录。
File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身(类似于,你可以把一个txt文件放在各种地方,但是不能在txt文件中进行写操作)。如果需要访问文件内容本身,则需要使用输入 / 输出流

举例:

package day12;import java.io.File;public class Test {public static void main(String[] args) {File f = new File("D:\\test\\abc\\tt.txt");//这个时候对象f就是tt.txt文件File f1 = new File("D:\\test\\abc","\\tt.txt");//这个f1也是tt.txt文件,这种使用相对较少File f2 = new File("D:/test/abc/tt.txt");File f3 = new File("D:" + File.separator + "test/abc/tt.txt");//注意:\在文件中是路径的分隔符,但是在java编程中一个\的意思是转义符,在java中\\或者/才是文件的分隔符//也可以用File.separator作为文件的分隔符File f4 = new File("D:/test/abc");//这是个目录//getName():获取文件名和目录名System.out.println(f.getName());//文件名System.out.println(f4.getName());//目录名System.out.println("-------------------------------------------");//getPath():获取路径File f5 = new File("src/day12/Test.java");//使用相对路径来创建File对象System.out.println(f5.getPath());//获取文件或者文件夹的路径,就是new File时候写的路径System.out.println(f5.getAbsolutePath());//获取文件或者文件夹的绝对路径System.out.println("-------------------------------------------");//getAbsoluteFile()System.out.println(f5);System.out.println(f5.getAbsoluteFile());//返回一个用当前的文件的绝对路径构建的File对象System.out.println("-------------------------------------------");//getParent()System.out.println(f5.getParent());//返回当前文件或文件夹的父级路径System.out.println("-------------------------------------------");//renameTo():文件改名//f.renameTo(new File("D:/test/abc/tt1.txt"));//给文件或文件夹重命名				}
}

3. 练习题

采用递归遍历文件夹中所有子文件夹以及文件。

package day12;import java.io.File;public class Test {public static void main(String[] args) {	File f = new File("D:/APP");new Test().test(f);	}/*** 递归遍历文件* @param file*/public void test(File file) {if(file.isFile()) {System.out.println(file.getAbsolutePath() + "是文件");}else {System.out.println(file.getAbsolutePath() + "是文件夹");//如果是文件夹,这个文件夹里就可能有子文件夹或者文件File[] fs = file.listFiles();//获取当前文件夹下的子文件夹或者文件的File对象if(fs != null && fs.length > 0) {for(File ff : fs) {test(ff);//递归}}}}}

4. Java IO原理

    IO 流用来处理设备之间的数据传输
    Java 程序中,对于数据的输入 / 输出操作以”流 (stream)” 的方式进行。
    java.io 包下提供了各种“流”接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

    输入 input :读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
    输出 output :将程序(内存)数据输出到磁盘、光盘等存储设备中

    
    
流的分类:

  • 按操作数据单位不同分为:字节流 (8 bit) ,字符流 (16 bit)
  • 按数据流的流向不同分为:输入流输出流
  • 按流的角色的不同分为:节点流处理流

Java 的 IO 流共涉及 40 多个类,实际上非常规则,都是从如下 4 个抽象基类派生的。

(抽象基类)字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter

由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。

更多推荐

【java学习—十二】io流(1)

本文发布于:2023-11-17 01:36:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636740.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:java   十二   io

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!