热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

java中File类的构造函数及其方法

这篇文章主要介绍了java中File类的构造函数及其方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、IO流(Input Output)

IO流技术主要的作用是解决设备与设备之间的数据传输问题,比如:硬盘的数据--读取到-->内存中 内存的数据--读取到-->硬盘中 键盘上的数据--读取到-->内存中

2、IO流技术的运用场景

导出报表、上传大头照、下载、解析xml文件.....等等 (数据保存到硬盘,该数据可以做到永久性保存。数据一般以文件的形式保存到硬盘上。sun使用一个File类来描述文件或者文件夹)

3、File类的构造函数(方法)

  • File(String pathname):指定文件或者文件夹的路径来创建一个File文件
  • File(File parent, String child):根据parent抽象路径和child路径名字符串,创建一个新的File实例
  • File(String parent, String child):

目录分割符:在Windows机器上的目录分隔符是\,在Linux机器上的目录分隔符是/

注意:在Windows上面\与/都可以作为目录分隔符。而且,如果写/的时候,只需要写1个正斜杠即可,而写\的时候,需要写2个反斜杠。

package com.dhb.file;
import java.io.File;
import java.io.IOException;
/**
 * @author DSHORE / 2018-6-22
 *
 */
public class Demo1 {
  public static void main(String[] args) throws IOException {
    File file = new File("F:/a.txt");//指定路径  [构造函数]
    file.createNewFile();//创建文件(空文件)  [方法]    
    File files = new File("F:\\","b.txt");//第一个参数是路径,第二个参数是要创建文件的文件名  [构造函数]
    files.createNewFile();//创建文件(空文件)  [方法]
  }
}

4、File类的一些常用方法

创建:

  • createNewFile():在指定位置创建空文件,成功返回true,如果已存在就不再创建了返回false
  • mkdir():在指定位置创建目录,这之后创建最后一级目录,如果上级目录不存在就抛出异常.
  • mkdirs():在指定位置创建目录,这也会创建路径中所有不存在的父目录
  • renameTo(File dest):重命名文件或文件夹。文件不同时,相当于文件的剪切,剪切的时候不能操作非空文件夹。移动/重命名成功返回true,失败返回false

删除:

  • delete() :删除一个文件或者空文件夹,如果文件夹不为空,则不能删除,成返回true,失败返回false
  • deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名的文件或者目录,保证文件异常时也可以删除文件

判断:

  • exists():判断指定的文件或者文件夹是否存在
  • isFile():判断是否是一个文件;如果不存在,则为false
  • isDirectory():判断是否是一个文件夹
  • isHidden():判断指定的文件是否是隐藏文件
  • isAbsolute():判断指定的文件或文件夹是否是在绝对路径下

获取:

  • getName():获取文件或文件夹名称
  • getPath():返回的是绝对路径,可以是相对路径,但是目录要指定
  • getAbsolutePath():获取绝对路径
  • length():获取文件的大小(字节为单位)
  • getParent():获取文件的父路径
  • lastModified():获取文件最后一次修改的时间

注意:

  • . :一个点表示当前路径
  • .. :两个点表示上一级路径

路径问题:

  • 绝对路径:该文件在硬盘上的完整路径;绝对路径一般是以盘符开头的。
  • 相对路径:资源文件相对于当前程序所在路径。

注意:如果程序当前所在路径与资源文件不再同一个盘下面,是没法写相对路径的

5、实例

package com.dhb.file;

import java.io.File;
import java.io.IOException;

/**
 * @author DSHORE / 2018-6-22
 *
 */
public class Demo2 {
  public static void main(String[] args) throws IOException {
    //创建
    File file=new File("F:\\aa");
    System.out.println("创建文件成功了吗?"+file.createNewFile());
    File dir=new File("F:\\aaa\\aaa");
    System.out.println("创建文件夹成功了吗?"+dir.mkdir());
    File dirs=new File("F:\\aaa\\aaa\\aa\\cc\\ddd");
    System.out.println("创建多级文件夹成功了吗?"+dirs.mkdirs());
    
    File destFile=new File("F:\\aaaw");
    System.out.println("重命名文件夹成功吗?"+dir.renameTo(destFile));
    System.out.println("重命名文件成功吗?"+file.renameTo(destFile));
    
    //删除
    File deletefile=new File("F:\\aaa");
    System.out.println("删除文件/空文件夹成功吗?"+deletefile.delete());
    file.deleteOnExit();//jvm
    System.out.println("哈哈哈");
    
    //判断
    File fil=new File("F:\\a.txt");
    file.createNewFile();//创建一个文件
    System.out.println("该文件/文件夹存在吗?"+fil.exists());
    System.out.println("判断是否是一个文件:"+fil.isFile());
    System.out.println("判断是否是一个文件夹:"+fil.isDirectory());
    System.out.println("隐藏文件吗?"+fil.isHidden());
    System.out.println("是绝对路径吗?"+fil.isAbsolute());
  }
}

"获取"的例子

package com.dhb.file;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author DSHORE / 2018-6-25
 *
 */
public class Demo3 {
  public static void main(String[] args) {
    /*File file=new File("..\\homeWork.java");
    System.out.println(file.exists());*/
    File f=new File("..\\..\\a.txt");//上上级路径下的a.txt文件
    System.out.println("获取文件名:"+f.getName());//返回值:a.txt
    System.out.println("获取相对路径:"+f.getPath());//返回值:..\..\a.txt  说明:a.txt文件在C:\MyEclipse10路径下
    /** 当上面两条输出语句的绝对路径下没有a.txt这个文件时,也是输出这个结果,因为他获取的是当前对象f的值*/
    System.out.println(f.exists());//返回值:true   说明:C:\MyEclipse10路径下有a.txt文件
    System.out.println("获取绝对路径:"+f.getAbsolutePath());//返回值:C:\MyEclipse10\MyCode\MyJavaCode\..\..\a.txt
    System.out.println("获取文件的大小(字节为单位):"+f.length());//返回值:10
    System.out.println("获取文件的父路径:"+f.getParent());//返回值:..\..  说明:其父路径为C:\MyEclipse10
    long lm=f.lastModified();
    Date date=new Date(lm);
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");  
    System.out.println("获取文件最后一次修改的时间:"+sdf.format(date));//返回值:2018年06月25日 11:29:49
  }
}

运行结果图

附录1

与文件夹操作相关:

  • static File[] listRoots():列出所有的根目录(Windows所有系统盘符)
  • list():返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
  • listFiles():返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)
package com.dhb.file;
import java.io.File;
/**
 * @author DSHORE / 2018-6-25
 *
 */
public class Demo4 {
  public static void main(String[] args) {
    File[] roots=File.listRoots();
    for (File file : roots) {
      System.out.println(file);
      /* C:\   //运行结果
       * D:\
       * E:\
       * F:\
       * G:\
       * H:\
       * */
    }
    File file=new File("F:\\MyJavaCode");
    String[] s=file.list();
    for (String string : s) {
      System.out.println(string);//返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
    }
    File[] f=file.listFiles();
    for (File file2 : f) {
      System.out.println(file2.getName());//返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)
    }
  }
}

运行结果图

后面两条输出语句的结果都一样

附录2

例1:

package com.dhb.file;

import java.io.File;

/**
 * @author DSHORE / 2018-6-25
 *
 */
/* 需求1:指定一个文件夹,然后返回文件夹下面所有java文件
 * */
public class Demo5 {
  public static void main(String[] args) {
    listJava(new File("F:\\MyJavaCode"));
  }
  public static void listJava(File dir){
    File[] file=dir.listFiles();
    for (File file2 : file) {
      //方法1
      if(file2.getName().endsWith(".java")){
        System.out.println(file2.getName());
      }
      //方法2:正则表达式
      String fileName=file2.getName();
      if(fileName.matches(".+\\.java")){
        System.out.println(fileName);
      }
    }
  }
}

运行结果图

   

例2:

package com.dhb.file;
import java.io.File;
/**
 * @author DSHORE / 2018-6-26
 *
 */
/*
 * 需求2:指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是 格式要如下
 * 
 * 文件:
 *   文件名1
 *     文件名2
 *     文件名2
 *
 * 文件夹:
 *     文件夹1
 *     文件夹2
 *     文件夹3
 * */
public class Demo6 {
  public static void listJava2(File dir){
    File[] file=dir.listFiles();
    System.out.println("以下是文件:");
    for (File file2 : file) {
      if(file2.isFile()){//判断其是否是文件
        System.out.println(file2.getName());
      }
    }
    System.out.println("以下是文件夹:");
    for (File file2 : file) {
      if(file2.isDirectory()){//判断其是否是文件夹
        System.out.println(file2.getName());
      }
    }
  }
  public static void main(String[] args) {
    listJava2(new File("F:\\MyJavaCode"));
  }
}

运行结果图

附录3

package com.dhb.file;
import java.io.File;
/**
 * @author DSHORE / 2018-6-26
 *
 */
//需求:扫描电脑中所有文件夹和文件以及文件夹下的文件和文件夹,或扫描指定盘符下的所有文件和文件夹等等
public class Demo7 {
  public static void listDirtory(String dir){
    File f=new File(dir);
    File[] f2=f.listFiles();//得到文件和文件夹
    if(f2==null){
      return;
    }else{
      for (int i = 0; i 

运行结果图(文件和文件夹太多,下面只显示部分)路径的最后一级是文件/文件夹

附录4

package com.dhb.file;

import java.io.File;

/**
 * @author DSHORE / 2018-7-4
 *
 */
//需求:删除磁盘中指定的文件夹里面的所有文件和文件夹
public class Demo12 {
  public static void delDir(File dir){
    File[] files=dir.listFiles();
    if(files != null){            
      for (int i = 0; i 

删除前

删除后(程序运行后)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
author-avatar
百变精装绣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有