深入了解File类,勘破文件操作 | 带你学《Java语言高级特性》之四十七

简介: 了解了File类提供的几个基本功能后,我们还需要注意一些问题,比如文件路径分隔符、JVM文件处理流程、创建时路径注意事项等,本节将一一介绍。

上一篇:Flie类-踏入文件的领域 | 带你学《Java语言高级特性》之四十六
了解了File类提供的几个基本功能后,我们还需要注意一些问题,比如文件路径分隔符、JVM文件处理流程、创建时路径注意事项等,本节将一一介绍。

【本节目标】
通过阅读本节内容,你将了解到不同的操作系统中的路径的编写方式、注意到文件操作过程中文件名应当尽可能避免重复,掌握创建单级目录和多级目录的方法,保证上级路径的存在性。

File类操作深入

现在已经实现了文件的基础操作,但是对于这个操作里面也是存在有一些问题的,下面针对于之前的代码进行优化处理。

1、在实际的软件项目开发和运行过程之中,往往都会在Windows系统中进行项目的开发,而在项目部署的时候基于Linux或者Unix系统来进行项目发布以保证生产环节的安全性。

在不同的操作系统之中会存在有不同的路径分隔符:

Windows标准分隔符为“”;Linux分隔符为“/”;
所以在最初的开发时就必须考虑不同系统环境下的分隔符问题,所以为了解决此问题,File类提供有一个常量:public static final String separator;随着系统的适应性的不断加强,对于当前的路径操作,也可以比较随意的使用了。

范例:正常的路径编写

public class JavaAPIDemo {
    public static void main(String[] args) throws Exception{
        File file = new File("d:"+File.separator+"mldn.txt");
        if(file.exists()) {
             file.delete();    //删除文件
        }else {    //文件不存在
             System.out.println(file.createNewFile()) ;   //创建新的文件
        }
    }
}

但是随着系统的适应性的不断加强,对于当前的路径操作,也可以随意使用了。

File file = new File(“d:/mldn.txt”);

2、在使用File类进行文件处理的时候需要注意的是:程序→JVM→操作系统函数→文件处理。所以在进行同一文件反复删除或创建的时候有可能会出现延迟的问题,所以这时最好的方案是别重名;
3、在进行文件创建的时候有个重要前提:文件的父路径必须首先存在。

  • 如何获取父路径:public File getParentFile();
  • 创建目录:public boolean mkdir(),创建单级目录;
  • 创建目录:public boolean mkdirs(),创建多级目录;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception{
        File file = new File("d:"+File.separator+"hello"+File.separator+"demo"+File.separator"+"message"+File.separator"+mldn.txt");
        if(file.getParentFile().exists()) {    //父路径不存在
             file.getParentFile.mkdirs() ;   //创建父路径
        }
        if(file.exists()) {
             file.delete();    //删除文件
        }else {    //文件不存在
             System.out.println(file.createNewFile()) ;   //创建新的文件
        }
    }
}

这种判断并且建立父目录的操作在很多情况下可能只需要一次,但是如果将这个判断一直都停留在代码里面,那么就会造成时间复杂度的提升,所以这个时候要想提升性能,请先保证目录已经创建。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:借助File类了解文件的内在美 | 带你学《Java语言高级特性》之四十八
更多Java面向对象编程文章查看此处

相关文章
|
4月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
425 5
|
4月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
195 4
|
4月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
358 18
|
4月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
270 5
|
4月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
260 1
|
4月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
233 1
|
4月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
319 1
|
4月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
269 1
|
5月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案