File类的对象是文件或目录的路径名的抽象表示。

创建文件

我们可以从以下创建一个File对象 -

一个路径名

一个父路径名和子路径名

一个URI (统一资源标识符)

可以使用File类的以下构造函数之一来创建一个文件:

File(String pathname)

File(File parent, String child)

File(String parent, String child)

File(URI uri)

如果有一个文件路径文件名称的字符串为test.txt,可以创建一个抽象路径名称,如下面的代码。

File dummyFile = new File("test.txt");

名称为test.txt的文件不必存在,以使用此语句创建File对象。dummyFile对象表示抽象路径名,它可指向或可能不指向文件系统中的真实文件。

File类有几个方法来处理文件和目录。使用File对象可以创建新文件,删除已存在的文件,重命名文件,更改文件权限等。

File类中的isFile()和isDirectory()告诉File对象是否表示文件或目录。

当前工作目录

JVM的当前工作目录是根据运行java命令来设置的。可以通过读取user.dir系统属性来获取JVM的当前工作目录,如下所示:

String workingDir = System.getProperty("user.dir");

使用System.setProperty()方法更改当前工作目录。

System.setProperty("user.dir", "C:\\myDir");

要在Windows上指定C:\test作为user.dir系统属性值,运行如下所示的程序:

java -Duser.dir=C:\test your-java-class

检查文件是否存在

可以使用File类的exists()方法检查File对象的抽象路径名是否存在。

boolean fileExists = dummyFile.exists();

完整源代码如下 -

import java.io.File;

public class Main {

public static void main(String[] argv) {

// Create a File object

File dummyFile = new File("dummy.txt");

// Check for the file's existence

boolean fileExists = dummyFile.exists();

if (fileExists) {

System.out.println("The dummy.txt file exists.");

} else {

System.out.println("The dummy.txt file does not exist.");

}

}

}

上面的代码生成以下结果。

The dummy.txt file does not exist.

路径

绝对路径是在文件系统上唯一标识文件。使用规则路径是唯一标识文件系统上文件的最简单路径。可以使用getAbsolutePath()和getCanonicalPath()方法来分别获得由File对象表示的绝对路径和规范路径。

import java.io.File;

import java.io.IOException;

public class Main {

public static void main(String[] args) {

printFilePath("dummy.txt");

printFilePath(".." + File.separator + "notes.txt");

}

public static void printFilePath(String pathname) {

File f = new File(pathname);

System.out.println("File Name: " + f.getName());

System.out.println("File exists: " + f.exists());

System.out.println("Absolute Path: " + f.getAbsolutePath());

try {

System.out.println("Canonical Path: " + f.getCanonicalPath());

}

catch (IOException e) {

e.printStackTrace();

}

}

}

上面的代码生成以下结果。

File Name: dummy.txt

File exists: false

Absolute Path: F:\WebSite\Yiib\worksp\SingletonPattern\dummy.txt

Canonical Path: F:\WebSite\Yiib\worksp\SingletonPattern\dummy.txt

File Name: notes.txt

File exists: false

Absolute Path: F:\WebSite\Yiib\worksp\SingletonPattern\..\notes.txt

Canonical Path: F:\WebSite\Yiib\worksp\notes.txt

文件分隔符

不同的操作系统使用不同的字符来分隔路径名中的两个部分。例如,Windows在路径名中使用反斜杠(\)作为名称分隔符,而UNIX使用正斜杠(/)。

File类定义了一个名称为分隔符Char的常量,它是系统相关的名称分隔符。可以使用File.separator 字符常量作为分隔符。File.separator常量名称作为String分隔符。

在程序中使用名称分隔符(File.separator)使Java代码在不同的平台上工作。

¥ 我要打赏

纠错/补充

收藏

上一篇:

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java导出文件教程_Java文件教程相关推荐

  1. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  2. java io流 教程_Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...

  3. java io教程_Java IO教程

    java io教程 Java provides several classes in java.io package to work with text, stream data, and file ...

  4. java反射教程_Java反射教程

    java反射教程 在本教程中,我主要编写一些示例来介绍Java反射可以做什么. 希望它可以给您这个概念的概述. 请留下您的评论以寻求建议. 什么是反射? 简而言之,反射是程序在运行时检查和修改对象的结 ...

  5. java捕鱼设计_JAVA毕业设计教程:用swing实现捕鱼达人代码教程

    用JAVA SWING实现的捕鱼教程 开发工具:ECLIPSE 实现技术:JAVA SWING 用到的JAR包:xmlpull_1_1_3_4c.jar.dom4j-1.6.1.jar.jl1.0.j ...

  6. java窗口代码_Java系列教程day01——java的搭建环境

    day01--搭建环境变量&HelloWorld程序 1.注意听课,不要溜号,不要睡觉,不要游戏. 2.我的联系方式: QQ:79539705 3.整理笔记.绘制思维导图.完成作业.. 一.J ...

  7. java批处理 异常处理_Java批处理教程

    java批处理 异常处理 在当今世界,互联网已经改变了我们的生活方式,其主要原因之一是大部分日常琐事都使用互联网. 这导致大量数据可用于处理. 其中涉及大量数据的一些示例是处理工资单,银行对帐单,利息 ...

  8. java nio教程_Java NIO教程

    java nio教程 1.简介 Java NIO是Java 1.4引入的一个库. 自从Java NIO推出以来,它提供了另一种方法来处理I / O和网络事务. 它被认为是Java网络和Java IO库 ...

  9. java ssl证书_Java安全教程–创建SSL连接和证书的分步指南

    java ssl证书 在有关应用JEE安全性的系列文章中,我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程. 如我们之前的文章中所述, 安全套接字层(SSL)/ ...

最新文章

  1. 笔记:2016-06-03
  2. 核逼近(Kernel Approximation)
  3. 好看的html导航栏作品,精选10款超酷的HTML5/CSS3菜单
  4. 计算机视觉与深度学习 | 视觉里程计库Libviso2详解
  5. bond的主备模式_号外号外:Redhat7通过bond技术实现双网卡绑定
  6. flink配置+停止flink中的job
  7. 函数hook注意事项
  8. python和mt4的区别_MT4和MT5最大的区别在哪里?
  9. oracle约束 1或0,Oracle笔记(十) 约束
  10. 仿IOS圆角可自定义扩展对话框
  11. Nessus下载及安装
  12. 高通平台调整通话音量
  13. 怎样设置用键盘开机?
  14. Cisco WLC9800 CWA FlexConnect with ISE
  15. linux 硬盘满了如何处理
  16. 微信支付遇到 商户号该产品权限未开通,请前往商户平台产品中心检查后重试
  17. android 浏览器源码分析,android webview 简单浏览器实现代码
  18. htons() ntohl() ntohs() htons()的区别及详解
  19. 手机也能当门卡?!--NFC技术应用
  20. css中background: lighten的用法

热门文章

  1. 你知道怎么用Python发送邮件吗?
  2. @程序员,CSDN卫衣、背包、鼠标垫......福利来啦!!!
  3. 华为HarmonyOS 2.0全面升级,构建中国软件的“根”!
  4. VIP 时代,详解会员营销系统架构技术实践!
  5. 太慢不能忍!CPU 又拿硬盘和网卡开刀了!
  6. 阿里云自研数据仓库 AnalyticDB 再捧 TPC 全球冠军
  7. “生命游戏之父”因新冠肺炎逝世,回顾数学顽童的一生
  8. 中国开发者真实画像:Java长盛,偏爱Windows操作系统,鲜少参与开源项目
  9. 好评率超高的几个硬核公众号,99%的程序员都关注了!
  10. 啊哈,算法!为什么你如此“谜”人!