首页 Java java教程 File概述与使用方法介绍

File概述与使用方法介绍

Jun 21, 2017 am 09:34 AM
file 递归

File概述
 java.io.File类:文件和目录路径名的抽象表示形式。
  用来描述电脑中文件,文件夹,以及路径类

常用的3个和File有关的单词:
  file:文件
  directory:文件夹(目录)
  path:路径
 File是一个与系统无关的类

File类的3个重载的构造方法
路径:
window系统的目录分隔符是一个\
java中的目录分隔符是:\\或者/
路径的分类:
绝对路径:以盘符开始的路径
例如:D:\\ase\\20170514\\day10
D:\\Work_EE_266\\day10\\src
相对路径:相对于当前项目来说,路径编写的时候可以省略盘符到项目之间的路径
D:\\Work_EE_266\\day10-->src

注意:路劲不区分大小写的
File(File parent, String child)
传递路径,传递 File 类型父路径,字符串类型子路径
好处:父路径是 File 类型,父路径可以直接调用 File 类的方法
File(String parent, String child)
传递路径,传递字符串类型父路径,字符串类型的子路径
好处:单独操作父路径和子路径,使用起来比较灵活,可以把路径单独作为参数传递过来
File(String pathname)
传递路径名:可以写文件夹,也可以写到一个文件
c:\\abc c:\\abc\\Demo.java
路径存不存在都可以创建,路径不区分大小写

 1 public static void main(String[] args) { 2         /* 3          * static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 
 4          * static char pathSeparatorChar  与系统有关的路径分隔符。 
 5          * static String separator  与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 
 6          * static char separatorChar  与系统有关的默认名称分隔符。 
 7          */ 8         String pathSeparator = File.pathSeparator; 9         System.out.println(pathSeparator);//路径分隔符 windows 分号; linux 冒号:10         11         String separator = File.separator;12         System.out.println(separator);//目录名称分隔符windows 反斜杠\  linux 正斜杠/13         14         /*15          * System类中的方法16          * static String getProperty(String key) 获取指定键指示的系统属性。 
17          * file.separator 文件分隔符(在 UNIX 系统中是“/”) 
18          * path.separator 路径分隔符(在 UNIX 系统中是“:”) 
19          * line.separator 行分隔符(在 UNIX 系统中是“/n”) 
20          */21         System.out.println(System.getProperty("file.separator"));22         System.out.println(System.getProperty("line.separator"));23         System.out.println(System.getProperty("path.separator"));24     }
登录后复制

File类的创建和删除功能
File 类的删除功能
boolean delete()
删除文件或者文件夹,在 File 构造方法中给出
删除成功返回 true,删除失败返回 false(不存在,文件夹中有内容)
删除方法不走回收站,直接从硬盘删除
删除有风险,运行需谨慎


File 创建文件夹功能
boolean mkdir() 只能创建单层文件夹
boolean mkdirs() 既能创建单层文件夹,又能创建多层文件夹
创建的路径也在 File 构造方法中给出
如果文件夹已经存在,不在创建


File 创建文件的功能
boolean createNewFile()
创建的文件路径和文件名,在 File 构造方法中给出
如果文件已经存在,不在创建返回 false
只能创建文件,不能创建文件夹(看类型,不要看后缀)
创建文件夹的路径,必须存在

File类的判断功能
boolean isDirectory()
判断 File 构造方法中封装的路径是不是文件夹
如果是文件夹就返回 true,如果不是文件夹就返回 false
boolean isFile()
判断 File 构造方法中封装的路径是不是文件
boolean exists()
判断 File 构造方法中封装路径是否存在
存在就返回 true,不存在就返回 false

File类的获取功能
String getParent() 返回 String 对象
File getParentFile() 返回 File 对象
获取父路径,返回的是文件末尾的父路径

long length()
返回路径中表示的文件的字节数,文件夹没有大小

String getPath() 将此抽象路径名转换为一个路径名字符串。
和 toString 一样

String getName()
返回路径中表示的文件或者文件夹名
获取路径中最后部分的名字

File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
获取绝对路径


遍历目录的方法list和listFiles
注意事项:
1.被遍历的路径只能是一个目录
2.被遍历的目录必须存在
  否则就会抛空指针异常

static File[] listRoots()
获取系统中所有根目录

File[] listFiles()
获取到 File 构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
返回的是目录或者文件的全路径

String[] list()
获取到 File 构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
返回的只有名字

递归
递归:方法自己调用自己
分类:
  递归分为两种,直接递归和间接递归。
  直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

注意:
 1.递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
 2.在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
 3.构造方法,禁止递归

 1 使用递归计算1-n之间的和 2       n + (n-1)+ (n-2)+(n-3)+...+1 3       5 +(5-1)+(4-1)+(3-1)+(2-1) 4       结束条件:n=1的时候结束 5       方法自己调用自己目的:获取n-1,获取到n=1的时候结束 6     public static int DGSum(int n){ 7         //添加结束条件 8         if(n==1){ 9             return 1;10         }11         return n+DGSum(n-1);12     } 
13 14 使用递归计算阶乘15      private static long DGJC(int n) {16         //递归的结束条件 n==117         if(n==1){18             return 1;19         }20         return n*DGJC(n-1);21     }22 23 使用递归计算斐波那契数列    
24     private static int fbnq(int month) {25         //结束条件如果month是1,2直接返回126         if(month==1 || month==2){27             return 1;28         }29         //3月以上:兔子数量是前两个月之和30         return fbnq(month-1)+fbnq(month-2);31     }
登录后复制

文件过滤器
文件的过滤器:
需求:遍历hello文件夹,只获取文件夹中的.java结尾的文件
c:\\hello
c:\\hello\\demo.txt
c:\\hello\\Hello.java

在File类中listFiles()方法是遍历文件夹的方法
有两个和 listFiles重载的方法,参数传递的就是过滤器
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。  
发现方法的参数FileFilter和FilenameFilter是接口
所有我们需要自己定义接口的实现类,重写接口中的方法accept,实现过滤功能

 1 public class FileFilterImpl implements FileFilter{ 2     /* 3      * 实现过滤的方法: 4         1.把传递过来的路径pathname,变成字符串 5             Stirng s  = pathname.toString(); "c:\\hello\\demo.txt" 6             String s  = pathname.getPaht(); "c:\\hello\\demo.txt" 7             String s = pathname.getName(); "demo.txt" 8         2.使用String类中的方法endsWith判断字符串是否以指定的字符串结尾 9             boolean b = s.endsWith(".java");10             return b;11      */12     @Override13     public boolean accept(File pathname) {14         /*String s = pathname.getName();15         boolean b = s.endsWith(".java");16         return b;*/17         return pathname.getName().toLowerCase().endsWith(".java");18     }19 }20 public class FilenameFilterImpl implements FilenameFilter{21 22     @Override23     public boolean accept(File dir, String name) {24         return name.toUpperCase().endsWith(".JAVA");25     }26 27 }
登录后复制

断点调试
 debug断点调试
 f6:逐行执行
 f5:进入到方法中
 f7:结束方法
 f8:跳到下一个断点
 watch:捕获

以上是File概述与使用方法介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C++ 函数的递归实现:递归深度有限制吗? C++ 函数的递归实现:递归深度有限制吗? Apr 23, 2024 am 09:30 AM

C++函数的递归深度受到限制,超过该限制会导致栈溢出错误。限制值因系统和编译器而异,通常在1000到10000之间。解决方法包括:1.尾递归优化;2.尾调用;3.迭代实现。

鸿蒙原生应用随机诗词 鸿蒙原生应用随机诗词 Feb 19, 2024 pm 01:36 PM

想了解更多关于开源的内容,请访问:51CTO鸿蒙开发者社区https://ost.51cto.com运行环境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、创建应用点击File->newFile->CreateProgect。选择模版:【OpenHarmony】EmptyAbility:填写项目名,shici,应用包名com.nut.shici,应用存储位置XXX(不要有中文,特殊字符,空格)。CompileSDK10,Model:Stage。Device

C++ lambda 表达式是否支持递归? C++ lambda 表达式是否支持递归? Apr 17, 2024 pm 09:06 PM

是的,C++Lambda表达式可以通过使用std::function支持递归:使用std::function捕获Lambda表达式的引用。通过捕获的引用,Lambda表达式可以递归调用自身。

在Java中递归地计算子字符串出现的次数 在Java中递归地计算子字符串出现的次数 Sep 17, 2023 pm 07:49 PM

给定两个字符串str_1和str_2。目标是使用递归过程计算字符串str1中子字符串str2的出现次数。递归函数是在其定义中调用自身的函数。如果str1是"Iknowthatyouknowthatiknow",str2是"know"出现次数为-3让我们通过示例来理解。例如输入str1="TPisTPareTPamTP",str2="TP";输出Countofoccurrencesofasubstringrecursi

C++ 函数的递归实现:递归与非递归算法的比较分析? C++ 函数的递归实现:递归与非递归算法的比较分析? Apr 22, 2024 pm 03:18 PM

递归算法通过函数自调用解决结构化的问题,优点是简洁易懂,缺点是效率较低且可能发生堆栈溢出;非递归算法通过显式管理堆栈数据结构避免递归,优点是效率更高且避免堆栈溢出,缺点是代码可能更复杂。选择递归或非递归取决于问题和实现的具体限制。

递归程序在C++中找到数组的最小和最大元素 递归程序在C++中找到数组的最小和最大元素 Aug 31, 2023 pm 07:37 PM

我们以整数数组Arr[]作为输入。目标是使用递归方法在数组中找到最大和最小的元素。由于我们使用递归,我们将遍历整个数组,直到达到长度=1,然后返回A[0],这形成了基本情况。否则,将当前元素与当前最小或最大值进行比较,并通过递归更新其值以供后续元素使用。让我们看看这个的各种输入输出场景−输入 −Arr={12,67,99,76,32};输出 −数组中的最大值:99解释 &mi

如何使用Vue表单处理实现表单的递归嵌套 如何使用Vue表单处理实现表单的递归嵌套 Aug 11, 2023 pm 04:57 PM

如何使用Vue表单处理实现表单的递归嵌套引言:随着前端数据处理和表单处理的复杂性不断增加,我们需要通过一种灵活的方式来处理复杂的表单。Vue作为一种流行的JavaScript框架,为我们提供了许多强大的工具和特性来处理表单的递归嵌套。本文将向大家介绍如何使用Vue来处理这种复杂的表单,并附上代码示例。一、表单的递归嵌套在某些场景下,我们可能需要处理递归嵌套的

C++ 函数递归详解:递归在字符串处理中的应用 C++ 函数递归详解:递归在字符串处理中的应用 Apr 30, 2024 am 10:30 AM

递归函数是一种在字符串处理中反复调用自身来解决问题的技术。它需要一个终止条件以防止无限递归。递归在字符串反转和回文检查等操作中被广泛使用。

See all articles