文件IO之 File 类和 InputStream, OutputStream 的用法(一)

简介: 文件IO之 File 类和 InputStream, OutputStream 的用法

如何对文件操作


文件是存储在硬盘上的, 直接通过代码操作硬盘不方便, 就在内存中创建一个对应的对象, 操作这个对象就可以间接的影响到硬盘中的文件了.


Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不代表真实存在该文件。


File 类


构造方法


5e5800aef3344e868863d72385c039d4.png


普通方法


fced97a66799445589364a53a9816ccd.png


代码1(文件获取):


public class Test {
    public static void main(String[] args) throws IOException {
        File file = new File("./hello.txt");
        System.out.println(file.getParent());  // 获取File对象父目录文件路径
        System.out.println(file.getName());    //获取File对象名称
        System.out.println(file.getPath());    //获取File对象文件路径
        System.out.println(file.getAbsolutePath());  //获取File对象绝对路径
        System.out.println(file.getCanonicalPath()); //获取File对象修饰过的绝对路径
    }
}


9dcaa133f4c6415580676aed264fee03.png

代码2(文件的删除创建):


public class Test {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file = new File("hello.txt");
        System.out.println("1 :" + file.exists());     //判断File对象代表文件是否存在
        System.out.println("2 :" + file.isDirectory()); //判断File对象代表文件是否是目录
        System.out.println("3 :" + file.isFile());    //判断File对象代表文件是否是一个普通文件
        System.out.println("4 :" + file.createNewFile());  //创建File对象代表文件, 成功返回true
        System.out.println("5 :" + file.createNewFile());
        System.out.println("6 :" + file.exists());
        System.out.println("7 :" + file.isDirectory());
        System.out.println("8 :" + file.isFile());
        Thread.sleep(5000);   //睡眠5s 便于观察文件是否存在
        System.out.println("9 :" + file.delete());  //删除该文件, 成功返回true
        System.out.println("10 :" + file.exists());
    }
}

ab8e9da105404db99308792a364c0aa1.png


在在睡眠 5s 时, 我们观察到, 文件确实被创建出来了.


b40e570908764eebb368feddde3eb5f8.png

代码3(另一种文件删除:deleteOnExit) :


public class Test {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file = new File("hello.next");
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        file.deleteOnExit();
        System.out.println(file.exists());
        Thread.sleep(5000);
    }
}

23c45556c492454ca688a09055e4428b.png

观察文件目录发现, hello.txt 文件在程序运行结束时被删除了.


代码4(目录创建) :


public class Test {
    public static void main(String[] args) {
        File file = new File("目录");
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.mkdir());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
    }
}


d0c83bb92e8b41718dcd9c8713011d28.png

成功创建目录 :

0af9dc20a8bf4cf19569071adfcd3fa7.png


创建子目录


public class Test {
    public static void main(String[] args) {
        File file = new File("a/b");  //要求两个目录不存在
        System.out.println(file.mkdir());  //没有中间目录不能创建
        System.out.println(file.mkdirs());  //没有中间目录 就会创建中间目录
    }
}

6a115a89c14c45128db8d9120cef6a50.png


b5c3c610e772490990f1c67767eadc6d.png



代码4(文件重命名) :

public class Test {
    public static void main(String[] args) throws IOException {
        File file1 = new File("hello.txt");  //该文件得存在
        file1.createNewFile();
        File file2 = new File("world.txt");  //要求该文件不存在
        System.out.println(file1.renameTo(file2));
        System.out.println(file1.exists());
        System.out.println(file2.exists());
    }
}

22e7576cae4b42399799df962304ee0f.png

a541bfd7bbed4eb29419bbad53778776.png

可以理解为 hello.txt 的数据换了个名字继续存在.


相关文章
|
2月前
|
Java
缓冲流和转换流的使用【 File类+IO流知识回顾③】
这篇文章介绍了Java中缓冲流(BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter)和转换流(InputStreamReader, OutputStreamWriter)的使用,包括它们的构造方法和如何利用它们提高IO操作的效率及处理字符编码问题。
缓冲流和转换流的使用【 File类+IO流知识回顾③】
|
2月前
|
存储 Java 调度
FileInputStream,FileOutputStream 和 FileReader ,FileWriter 类的基本使用【 File类+IO流知识回顾②】
这篇文章回顾了Java中FileInputStream、FileOutputStream、FileReader和FileWriter类的基本使用方法,包括读取和写入文件的操作,以及字符流和字节流的区别和应用场景。
FileInputStream,FileOutputStream 和 FileReader ,FileWriter 类的基本使用【 File类+IO流知识回顾②】
|
2月前
|
Java
File类的基本使用【 File类+IO流知识回顾①】
这篇文章回顾了Java中File类的基本使用,包括创建File对象、获取文件数据信息、判断文件存在与否、创建和删除文件目录,以及遍历文件目录的方法。
File类的基本使用【 File类+IO流知识回顾①】
|
2月前
|
存储 Java
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
这篇文章介绍了Java中ObjectInputStream和ObjectOutputStream类的基本使用,这两个类用于实现对象的序列化和反序列化。文章解释了序列化的概念、如何通过实现Serializable接口来实现序列化,以及如何使用transient关键字标记不需要序列化的属性。接着,通过示例代码演示了如何使用ObjectOutputStream进行对象的序列化和ObjectInputStream进行反序列化。
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
|
25天前
|
搜索推荐 索引
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件
33 2
|
25天前
|
编解码 Java 程序员
【文件IO】文件内容操作
【文件IO】文件内容操作
40 2
|
25天前
|
存储 Java API
【文件IO】文件系统操作
【文件IO】文件系统操作
39 1
|
26天前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
33 0
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
4月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用