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. ios--NavigationViewController跳转、返回传值

      使用NavigationViewController进行页面跳转时,应该使用pushViewController方法来跳转至下一页面,这样的话,下一页面同样在NavigationViewContr ...

  2. 剑指offer 9-10:青蛙跳台阶与Fibonacii数列

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 问题分析 我们将跳法个数y与台阶数n视为一个函数关系,即y=f(n). ...

  3. Django 基于 jquery 的 ajax

    <1> $.ajax的两种写法: $.ajax("url",{}) $.ajax({}) <2> $.ajax的基本使用 $.ajax({ url:&quo ...

  4. Git学习笔记4-分支

    参考链接廖雪峰git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136 1.分支创建 创建本地分支: $ git b ...

  5. Codeforces Round #304 (Div. 2)(CF546D) Soldier and Number Game(线性筛)

    题意 给你a,b(1<=b<=a<=5000000)表示a!/b!表示的数,你每次可以对这个数除以x(x>1且x为这个数的因子)使他变成a!/b!/x, 问你最多可以操作多少次 ...

  6. 笔记14:Docker 部署Python项目

    Docker 部署Python项目 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如果从一种操作系统里面运行另一种操作系统,通常我们采取 ...

  7. Centos 安装Django2.1

    一.环境准备 1.1 服务器系统 Centos7 1.2.所需工具 python3(Django 2.0 版本是基于python3 版本,故而安装时需安装python3) Setuptools(> ...

  8. GitHub操作(五)

    GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. 1. 打开浏览器,输入GitHub的网址https://github.co ...

  9. 使用lombok的利弊

    使用lombok的好处是:1.减少大量的模板代码,get和set方法,从代码封装维度看,将大量的模板代码进行封装,不需要其他人员来不断编写,哪怕是IDE可以生成的代码,这也是重复代码,减少重复的出现; ...

  10. Jike_Time

    数据分析全景图 1. 数据采集.它是我们的原材料,也是最“接地气”的部分,因为任何分析都要有数据源. 2. 数据挖掘.它可以说是最“高大上”的部分,也是整个商业价值所在.之所以要进行数据分析,就是要找 ...