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. 腾讯WeTest&TesterHome深圳线下沙龙

    腾讯官方的一站式品质开放平台「腾讯WeTest」携手知名测试社区「TesterHome」以及3家金融相关企业为我们带来的金融专场. 本次活动内容主要以金融公司的测试落地和测试技术为主,我们希望你是一个 ...

  2. swift混编

    http://blog.csdn.net/fengsh998/article/details/34440159

  3. Java使用MD5加密算法,实现等登陆功能

    Java实现MD5加密 为了保护有些数据,就需要采取一些手段来进行数据的加密,防止被别人破解. MD5简介 md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorit ...

  4. PHP扩展使用-GD

    一.相关函数 1. 获取信息 gd_info() #查看当前系统环境gd库支持的图片格式 getimagesize(imagefile) #获取图像大小,非GD库函数 imagex(imagefile ...

  5. windows10下Bad owner or permissions on .ssh/config的解决办法

    方法很简单,亲测有效. 1.进入如下路径C:\Users\用户名\.ssh,你会看到有config这个文件 2.右击config,属性→安全→高级→禁止继承→删除所有继承(忘了全称了,大概这个意思)→ ...

  6. Mysql基础知识--触发器

    触发器的操作 在数据库系统中,当执行表事件时,则会激活触发器,从而执行其包含的操作 在具体的应用中,之所以会经常使用出发器数据对象,是由于该对象能够加强数据库表中数据的完整性约束和业务规则等. 一.创 ...

  7. YAML文件格式简介

    一.yaml简介   yaml是一种用来写配置文件的序列化语言,跟json有些像,yaml又称作json的超集,yaml的设计则是为了友好可读性,主要用于配置信息的书写,而json设计的目的则是为了简 ...

  8. pointnet++之scannet/train.py

    1.作者可能把scannet数据集分成了训练集和测试集并处理成了.pickle文件. 2.在代码运行过程中,作者从.pickle文件中读出训练集1201个场景的x.y.z坐标和测试集312个场景的x. ...

  9. 使用hangfire在xunit中

    框架为:abp hangfire配置连接:https://aspnetboilerplate.com/Pages/Documents/Hangfire-Integration 在单元测试中如何配置呢? ...

  10. Excel-统计函数

    1.Count系列函数 COUNT 数字个数----下面结果为 4 counta 非空的字数 ----下面为6 COUNTBLANK ------非空个数  ---- 下面为9 如何将字符串形式的数字 ...