Java学习:File类

  • File类的概述
  • 重点:记住这三个单词
  • 绝对路径和相对路径
  • File类的构造方法
  • File类判断功能的方法
  • File类创建删除功能的方法
  • File类获取(文件夹)目录和文件夹相关功能

File类的概述

Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中。
其中:

  1. 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类;
  2. 而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类

首先需要明白的是:流是干什么的?

  • 为了永久性的保存数据
  • 根据数据流向的不同分为输入流和输出流;
  • 根据处理数据类型的不同分为字符流和字节流;

然后需要明白的是输入模式和输出模式是谁流向谁:

  1. InputStream(字节输入流)和Reader(字符输入流)通俗的理解都是读(read)的。
  2. OutputStream(字节输出流)和Writer(字符输出流)通俗的理解都是写(writer)的。

重点:记住这三个单词

  • file:文件
  • directory:文件夹/目录
  • path:路径

绝对路径和相对路径

路径:

  • 绝对路径:是一个完整的路径
  1. 以盘符(c:,D:)开始的路径
  2. D:\\Users\\cai\\a.txt
  • 相对路径:是一个简化的路径
  1. 相对指的是相对于当前项目的根目录,路径可以简化书写
  2. D:\\Users\\cai\\a.txt-->简化为:a.txt

注意:

  1. 路径是不区分大小写的
  2. 路径中的文件名称分隔符windows使用反斜杠,反斜杠是转义字符,两反斜杠代表一个普通的反斜杠

File类的构造方法

File类

位于java.io包

构造方法:

File(String parent, String child)//根据一个目录和一个子文件/目录得到File对象
new file("d:\\","a.txt"); File(String pathname) //根据一个路径得到File对象
new file("d:\\a.txt"); File(File parent, String child)//根据一个父File对象和一个子文件/目录得到File对象
File f = new File("d:\\");
File f1=new File(f,"a.txt"); 

File类判断功能的方法

File类(File类的判断功能)

  A:判断功能
    public boolean isDirectory():判断是否是目录
    public boolean isFile():判断是否是文件
    public boolean exists():判断是否存在
    public boolean canRead():判断是否可读
    public boolean canWrite():判断是否可写
    public boolean isHidden():判断是否隐藏

File类创建删除功能的方法

A:创建功能
    public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
    public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
    public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
  • 使用createNewFile()文件创建的时候不加.txt或者其他后缀也是文件,不是文件夹;使用mkdir()创建文件夹的时候,如果起的名字是比如aaa.txt也是文件夹不是文件;

注意事项:

  • 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

File类(File类的重命名和删除功能)

    A:重命名和删除功能
    public boolean renameTo(File dest):把文件重命名为指定的文件路径
    public boolean delete():删除文件或者文件夹
  B:重命名注意事项
    如果路径名相同,就是改名。
    如果路径名不同,就是改名并剪切。
  C:删除注意事项:
    Java中的删除不走回收站。
    要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

File类获取(文件夹)目录和文件夹相关功能

获取功能:
getName() 获取文件或文件夹的名称,不包含上级路径。
getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()获取最后一次被修改的时间。

文件夹相关功能

static File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
list() 返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
list(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
listFiles(FilenameFilter filter)返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。

测试代码

public class CaiNiao{
public static void main(String[] args) throws IOException {
//createFileMethod();
listRoots();
}
//创建文件
public static void createFileMethod(){
File file = new File("file.txt");
try {
boolean b = file.createNewFile();
System.out.print(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建临时文件
public static void createTempFileMethod(){
File dir = new File("D:\\");
try {
File b = File.createTempFile("test", ".tmp",dir);//使用指定目录的方法
System.out.print(b.getAbsolutePath());
File b1 = File.createTempFile("tmp2", null);//使用不指定目录的构造方法
System.out.print(b1.getAbsolutePath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建目录
public static void createDirMethod(){
File dir = new File("d:"+File.separator+"dfr"+File.separator+"ddd");
File dir1 = new File("d:"+File.separator+"dff"+File.separator+"ddd");
boolean b = dir.mkdirs();//可以递归的创建不存在的目录
boolean b1 = dir1.mkdir();//创建目录,不能递归,只能创建一级目录
System.out.println(b);
System.out.println(b1);
} //删除文件
public static void deleteFileMethod(){
File file = new File("file.txt");
try {
boolean b = file.createNewFile();
System.out.print(b);
file.deleteOnExit();
file.delete();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//判断文件对象或者目录是否是文件或者目录时候,必须判断该文件是否存在
public static void IsDirOrFileMethod() throws IOException{
File file = new File("a.txt");
File file1 = new File("d:"+File.separator+"hhh");
file.createNewFile();
file1.mkdir();
System.out.println("是否存在"+file.exists());
System.out.println("是否是文件"+file.isFile());
System.out.println("是否是目录"+file.isDirectory());
System.out.println("是否是隐藏"+file.isHidden());
System.out.println("目录是否为绝对目录名"+file1.isAbsolute());
System.out.println("file对象对应的文件目录是否可write: "+file1.canWrite());
System.out.println("file对象对应的文件目录是否可read: "+file1.canRead());
System.out.println("file对象对应的文件目录是否可Execute: "+file1.canExecute());
}
//获取的方法
public static void getMehtod(){
File file = new File("E:\\file2.txt");
File dir = new File("abc");
System.out.println("获取抽象路径名转化为路径名字字符串:"+file.getPath());//E:\file2.txt
System.out.println("获取此File对象对应的绝对路径名:"+file.getAbsolutePath());//E:\file2.txt
System.out.println("获取此File对象的所对应目录(最后一级子目录(绝对路径))的父目录名:"+file.getParent());//E:\
System.out.println("获取此File对象最后修改时间:"+file.lastModified());//1405853667765,修改日期的毫秒数
}
//相当于重命名剪切
public static void renameFile() throws IOException{
File f1 = new File("D:\\file.txt");
File f2 = new File("E:\\file2.txt");
System.out.println("f1重命名为f2的名字"+f1.renameTo(f2));
//System.out.println("f2重命名为f1的名字"+f2.renameTo(f1));
} //列出根目录的全部内容
public static void listRoots(){
File[] files = File.listRoots();
for(File file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
public static void listDemo(){
File f = new File("d:\\");
System.out.println("获取D盘的可用空间"+f.getFreeSpace());
System.out.println("获取D盘的可用于虚拟机的空间"+f.getUsableSpace());
System.out.println("获取D盘的总容量"+f.getTotalSpace());
String[] files = f.list();
for(String file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
public static void listFileterDemo(){
File f = new File("d:\\");
String[] files = f.list();
for(String file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字,使用 File[] listFiles()
//返回值为一个File对象
public static void listFileDemo(){
File f = new File("d:\\");
File[] files = f.listFiles();
for(File file:files){
System.out.println("列出根目录:"+file.getName());
}
}
/**
* 列出指定目录下,后缀为.java的文件,使用方法String[] list(FilenameFilter filter)
*/
public static void ListFileFileter(){
File f = new File("E:"+File.separator+"workspace"+File.separator+"IOTest");
String[] files = f.list(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
//System.out.println("dir:"+dir+"name....."+name);//说明dir表示指定目录,name表示指定目录的名称
return name.endsWith(".java");//通过匿名内部类的返回值来控制指定目录下面的文件和文件夹的显示
}
});
System.out.println(files.length);
//遍历指定目录下面的文件和目录
for(String file:files){
System.out.println(file);
}
} }

Java学习:File类的更多相关文章

  1. Java文件File类学习总结

    java.io.File类 代表文件和目录,在开发中,读取文件.生成文件.删除文件.修改文件的属性都会用到该类. 常见构造方法: public File(String pathName){} 以pat ...

  2. Java学习-023-Properties 类 XML 配置文件读取及写入源代码

    之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFr ...

  3. java.io.File类

    java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...

  4. JAVA之File类创建对象构造函数传参数需要注意的几点

    java中File类用于创建一个文件对象. 首先看一段代码: 1. package MyText1; import java.io.File; public class MyText1 { publi ...

  5. Java之File类

    一.初见File类 java.io.File类代表系统中的文件(文件或目录) 常用构造方法 File(String pathname) File(String parent, String child ...

  6. java.io.File类操作

    一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...

  7. java中File类的常用方法总结

    java中File类的常用方法 创建: createNewFile()在指定的路径创建一个空文件,成功返回true,如果已经存在就不创建,然后返回false. mkdir() 在指定的位置创建一个此抽 ...

  8. Java 中File类的createNewFile()与createTempFile(), delete和deleteOnExit区别

    1. Java 中File类的createNewFile()与createTempFile()的区别 最近,在看代码时看到了一个方法, File.createTempFile() ,由此联想到File ...

  9. 33.JAVA编程思想——JAVA IO File类

    33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...

  10. Java学习——枚举类

    Java学习——枚举类 摘要:本文主要介绍了Java的枚举类. 部分内容来自以下博客: https://www.cnblogs.com/sister/p/4700702.html https://bl ...

随机推荐

  1. Qt 连接MySQL

    工程文件 QT += sql 举例 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(&q ...

  2. 汇编指令之JMP,CALL,RET(修改EIP的值!!!)

    简单介绍了,JMP指令按市面上的意思来说是跳转到指定地址,但我这里不这么说,JMP, CALL, RET三个指令均为修改EIP值的指令,EAX, ECX, EBX, EDX, ESP, EBP, ES ...

  3. ROW_NUMBER()实现分页

    1. 在数据表基础上面添加一个自增的一列记录行数(虚拟的实际数据库不存在,不会影响数据库结构)的列当然也顺便起一个别名(我这里起了一个rowNum) 2.由于rowNum是一个虚拟的.若直接使用会报' ...

  4. RDD源码分析

    RDD源码解析 一. RDD.scala - Resilient Distributed Dataset (RDD) 弹性分布式数据集 弹性: 体现在计算上面 - the basic abstract ...

  5. linux驱动学习笔记---实现中断下半部以及驱动编写规范(七)【转】

    转自:https://blog.csdn.net/weixin_42471952/article/details/81609141 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协 ...

  6. CnetOS6.7编译安装MariaDB

    --安装所需软件包 [root@localhost mariadb-10.1.14]# yum install bison bison-devel ncurses libxml2 libxml2-de ...

  7. 免费音乐播放器-airplay(网上收集,仅供学习与研究,支持正版)

    AirPlay媒体播放器无需安装,并不会修改注册表,生成桌面快捷方式,加入启动菜单及快速启动. 因此,您只需要下载本软件,保存在任何地方即可使用.使用方便,界面酷炫. 自动下载和显示歌词.专辑封面.汇 ...

  8. zz 机器学习系统或者SysML&DL笔记

    机器学习系统或者SysML&DL笔记(一)  Oldpan  2019年5月12日  0条评论  971次阅读  1人点赞 在使用过TVM.TensorRT等优秀的机器学习编译优化系统以及Py ...

  9. Burst Balloons(leetcode戳气球,困难)从指数级时间复杂度到多项式级时间复杂度的超详细优化思路(回溯到分治到动态规划)

    这道题目做了两个晚上,发现解题思路的优化过程非常有代表性.文章详细说明了如何从回溯解法改造为分治解法,以及如何由分治解法过渡到动态规划解法.解法的用时从 超时 到 超过 95.6% 提交者,到超过 9 ...

  10. 【day05】css

    一.盒模型(BoxModel) 1.width 宽度 2.height 高度  说明: 块元素和有宽高属性的标记(img,input)            能设置宽度和高度,而行元素不能设置宽高 3 ...