java file对象_22_java之File对象

01IO技术概述

*A:IO技术概述*a: Output*把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作*b: Input*把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作*c: IO操作* 把上面的这种输入和输出动作称为IO操作

02File类的概述和作用

*A:File类的概述和作用*a: File的概念*File类是文件和目录路径名的抽象表示形式*Java中把文件或者目录(文件夹)都封装成File对象* 我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可

03File类静态的成员变量

*A:File类静态的成员变量*a: pathSeparator*与系统有关的路径分隔符,为了方便,它被表示为一个字符串*b: separator*与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串*c: 案例代码/** java.io.File

* 将操作系统中的,文件,目录(文件夹),路径,封装成File对象

* 提供方法,操作系统中的内容

* File与系统无关的类

* 文件 file

* 目录 directory

* 路径 path*/

public classFileDemo {public static voidmain(String[] args) {//File类静态成员变量//与系统有关的路径分隔符

String separator =File.pathSeparator;

System.out.println(separator);//是一个分号,目录的分割(window中环境变量配置各个路径用分号分割,表示一个完整的路径结束) Linux中是冒号 ://与系统有关的默认名称分隔符

separator =File.separator;

System.out.println(separator);//向右 \ 目录名称分割 Linux /

}

}

04File类构造方法_1

*A: File类构造方法_1*a: File(String pathname)*通过将给定路径名字符串转换为一个File对象,之后可以使用File中的方法*windows中的路径或文件名不区分大小写*d: 案例代码public classFileDemo1 {public static voidmain(String[] args) {

function();

}/** File(String pathname)

* 传递路径名: 可以写到文件夹,可以写到一个文件

* c:\\abc c:\\abc\\Demo.java

* 将路径封装File类型对象*/

public static voidfunction(){

File file= new File("d:\\eclipse");

System.out.println(file);

}

}

05相对路径和绝对路径

*A: 相对路径和绝对路径*a: 绝对路径*绝对路径是一个固定的路径,从盘符开始*b: 相对路径*相对路径相对于某个位置,在eclipse下是指当前项目下*c: 路径

绝对路径

在系统中具有唯一性

c:\\windows\\system32

相对路径

表示路径之间的关系

D:\\develop\\Java\\jdk1.7.0_72\\bin

D:\\develop\\Java\\jre7

路径之间关系

Java 父目录是D:\\develop

Java 子目录是:jdk1.7.0_72

父路径是 唯一性

子目录是可以多个

06File类的构造方法_2

*A: File类的构造方法_2*a:File(String parent, String child)*根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象*b: File(File parent, String child)*c: 案例代码public classFileDemo1 {public static voidmain(String[] args) {

function_2();

}/** File(File parent,String child)

* 传递路径,传递File类型父路径,字符串子路径

* 好处: 父路径是File类型,父路径可以直接调用File类方法*/

public static voidfunction_2(){

File parent= new File("d:");

File file= new File(parent,"eclipse");

System.out.println(file);

}/** File(String parent,String child)

* 传递路径,传递字符串父路径,字符串子路径

* 好处: 单独操作父路径和子路径*/

public static voidfunction_1(){

File file= new File("d:","eclipse");

System.out.println(file);

}

}

07File类创建文件功能

*A: File类创建文件功能* a: public booleancreateNewFile()*创建文件 如果存在这样的文件,就不创建了*b: 案例代码public classFileDemo2 {public static void main(String[] args)throwsIOException {

function();

}/** File创建文件的功能

* boolean createNewFile()

* 创建的文件路径和文件名,在File构造方法中给出

* 文件已经存在了,不在创建*/

public static void function()throwsIOException{

File file= new File("c:\\a.txt");boolean b =file.createNewFile();

System.out.println(b);

}

}

08File类创建目录功能

*A: File类创建目录功能*a: 创建目录* public booleanmkdir():创建文件夹 如果存在这样的文件夹,就不创建了* public booleanmkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来*b: 案例代码public classFileDemo2 {public static void main(String[] args)throwsIOException {

function_1();

}/** File创建文件夹功能

* boolean mkdirs() 创建多层文件夹

* 创建的路径也在File构造方法中给出

* 文件夹已经存在了,不在创建*/

public static voidfunction_1(){

File file= new File("c:\\abc");boolean b =file.mkdirs();

System.out.println(b);

}

}

09File类删除功能

*A: File类删除功能*a: 删除功能* public booleandelete():删除文件或者文件夹*B: 案例代码public classFileDemo2 {public static void main(String[] args)throwsIOException {

function_2();

}/** File类的删除功能

* boolean delete()

* 删除的文件或者是文件夹,在File构造方法中给出

* 删除成功返回true,删除失败返回false

* 删除方法,不走回收站,直接从硬盘中删除

* 删除有风险,运行需谨慎*/

public static voidfunction_2(){

File file= new File("c:\\a.txt");boolean b =file.delete();

System.out.println(b);

}

}

10File类获取功能

*A:File类获取功能*a: 方法介绍*String getName(): 返回路径中表示的文件或者文件夹名*获取路径中的最后部分的名字* longlength(): 返回路径中表示的文件的字节数*String getAbsolutePath(): 获取绝对路径,返回String对象*File getAbsoluteFile() : 获取绝对路径,返回File对象*eclipse环境中,写一个相对路径,绝对位置工程根目录*String getParent(): 获取父路径,返回String对象*File getParentFile(): 获取父路径,返回File对象*b: 案例代码public classFileDemo3 {public static voidmain(String[] args) {

function_3();

}/** File类的获取功能

* String getParent() 返回String对象

* File getParentFile()返回File对象

* 获取父路径*/

public static voidfunction_3(){

File file= new File("d:\\eclipse\\eclipse.exe");

File parent=file.getParentFile();

System.out.println(parent);

}/** File类获取功能

* String getAbsolutePath() 返回String对象

* File getAbsoluteFile() 返回File对象

* 获取绝对路径

* eclipse环境中,写的是一个相对路径,绝对位置工程根目录*/

public static voidfunction_2(){

File file= new File("src");

File absolute=file.getAbsoluteFile();

System.out.println(absolute);

}/** File类获取功能

* long length()

* 返回路径中表示的文件的字节数*/

public static voidfunction_1(){

File file= new File("d:\\eclipse\\eclipse.exe");long length =file.length();

System.out.println(length);

}/** File类的获取功能

* String getName()

* 返回路径中表示的文件或者文件夹名

* 获取路径中的最后部分的名字*/

public static voidfunction(){

File file= new File("d:\\eclipse\\eclipse.exe");

String name=file.getName();

System.out.println(name);/*String path = file.getPath();

System.out.println(path);*/

//System.out.println(file);

}

}

11File类判断功能

*A: File类判断功能*a: 方法介绍* booleanexists(): 判断File构造方法中封装路径是否存在*存在返回true,不存在返回false* booleanisDirectory(): 判断File构造方法中封装的路径是不是文件夹*如果是文件夹,返回true,不是文件返回false* booleanisFile(): 判断File构造方法中封装的路径是不是文件*如果是文件,返回true,不是文件返回false

​*b: 案例代码public classFileDemo4 {public static voidmain(String[] args) {

function_1();

}/** File判断功能

* boolean isDirectory()

* 判断File构造方法中封装的路径是不是文件夹

* 如果是文件夹,返回true,不是文件返回false

*

* boolean isFile()

* 判断File构造方法中封装的路径是不是文件*/

public static voidfunction_1(){

File file= new File("d:\\eclipse\\eclipse.exe");if(file.exists()){boolean b =file.isDirectory();

System.out.println(b);

}

}/** File判断功能

* boolean exists()

* 判断File构造方法中封装路径是否存在

* 存在返回true,不存在返回false*/

public static voidfunction(){

File file= new File("src");boolean b =file.exists();

System.out.println(b);

}

}

12File类list获取功能

*A: File类list获取功能*a: 方法介绍*String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)*返回只有名字*File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)*返回的是目录或者文件的全路径* staticFile[] listRoots(): 列出可用的文件系统根*b: 案例代码public classFileDemo {public static voidmain(String[] args) {

function_2();

}public static voidfunction_2(){//获取系统中的所有根目录

File[] fileArr =File.listRoots();for(File f : fileArr){

System.out.println(f);

}

}/** File类的获取功能

* File[] listFiles()

* 获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

* 返回的是目录或者文件的全路径*/

public static voidfunction_1(){

File file= new File("d:\\eclipse");

File[] fileArr=file.listFiles();for(File f : fileArr){

System.out.println(f);

}

}/** File类的获取功能

* String[] list()

* 获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)

* 返回只有名字*/

public static voidfunction(){

File file= new File("c:");

String[] strArr=file.list();

System.out.println(strArr.length);for(String str : strArr){

System.out.println(str);

}

}

}

13文件过滤器

* A: 文件过滤器

* a: 作用

* 过滤一个目录下的指定扩展名的文件,或者包含某些关键字的文件夹

* b: 方法介绍

* public String[] list(FilenameFilter filter)

* public File[] listFiles(FileFilter filter)

* C: 案例代码

/*

* 自定义过滤器

* 实现FileFilter接口,重写抽象方法

*/

public class MyFilter implements FileFilter{

public boolean accept(File pathname) {

/*

* pathname 接受到的也是文件的全路径

* c:\\demo\\1.txt

* 对路径进行判断,如果是java文件,返回true,不是java文件,返回false

* 文件的后缀结尾是.java

*/

//String name = pathname.getName();

return pathname.getName().endsWith(".java");

}

}

/*

* File类的获取,文件获取过滤器

* 遍历目录的时候,可以根据需要,只获取满足条件的文件

* 遍历目录方法 listFiles()重载形式

* listFiles(FileFilter filter)接口类型

* 传递FileFilter接口的实现类

* 自定义FileFilter接口实现类,重写抽象方法,

* 接口实现类对象传递到遍历方法listFiles

*/

public class FileDemo1 {

public static void main(String[] args) {

File file = new File("c:\\demo");

File[] fileArr = file.listFiles(new MyFilter());

for(File f : fileArr){

System.out.println(f);

}

}

}

14文件过滤器_原理分析

*A:文件过滤器_原理分析*listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname*accept方法接收了参数pathname,参数是listFiles传递来的*在accept方法中,进行判断,如果这个路径是Java文件,返回true,走着返回false*一旦方法返回了true* listFiles将路径保存到File数组中

15递归遍历全目录

*A: 递归遍历全目录*a: 案例代码/** 对一个目录的下的所有内容,进行完全的遍历

* 编程技巧,方法的递归调用,自己调用自己*/

public classFileDemo {public static voidmain(String[] args) {

File dir= new File("d:\\eclipse");

getAllDir(dir);

}/** 定义方法,实现目录的全遍历*/

public static voidgetAllDir(File dir){

System.out.println(dir);//调用方法listFiles()对目录,dir进行遍历

File[] fileArr =dir.listFiles();for(File f : fileArr){//判断变量f表示的路径是不是文件夹

if(f.isDirectory()){//是一个目录,就要去遍历这个目录//本方法,getAllDir,就是给个目录去遍历//继续调用getAllDir,传递他目录

getAllDir(f);

}else{

System.out.println(f);

}

}

}

}

16递归概念和注意事项

*A:递归概念和注意事项*a: 递归概念*递归,指在当前方法内调用自己的这种现象*递归分为两种,直接递归和间接递归*直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法*b: 注意事项*递归一定要有出口, 必须可以让程序停下*递归次数不能过多* 构造方法,禁止递归

17递归求和计算

*A: 递归求和计算*a: 题目分析* 1+2+3+...+(n-1)+n:求1到n的和* 总结规律:1到n的和等于1到(n-1)的和再加n* getSum(n-1)+n* 递归出口:getSum(1) return 1;*b: 案例代码/** 方法的递归调用

* 方法自己调用自己

* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化

* 注意:

* 递归一定要有出口, 必须可以让程序停下

* 递归次数不能过多

* 构造方法,禁止递归*/

public classDiGuiDemo {public static voidmain(String[] args) {int sum = getSum(3);

System.out.println(sum);

}/** 计算 1+2+3+100和 = 5050

* 计算规律:

* n+(n-1)+(n-2)

* 100+(100-1)+(99-1)+...1*/

public static int getSum(intn){if( n == 1)return 1;return n + getSum(n-1);

}

}

18递归求阶乘

*A: 递归求和计算*a: 题目分析* 5!=5*4*3*2*1

* =5*4!

* 4!=4*3!

* 3!=3*2!

* 2!=2*1!

* 1!=1

* n!=n*(n-1)!

* 递归出口:n*getJieCheng(n-1): getJieCheng(1) return 1;*b: 案例代码/** 方法的递归调用

* 方法自己调用自己

* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化

* 注意:

* 递归一定要有出口, 必须可以让程序停下

* 递归次数不能过多

* 构造方法,禁止递归*/

public classDiGuiDemo {public static voidmain(String[] args) {

System.out.println(getJieCheng(5));

}/** 计算阶乘 5!

* 5*4*3*2*1*/

public static int getJieCheng(intn){if ( n == 1)return 1;return n * getJieCheng(n-1);

}

}

19递归计算斐波那契数列

*A: 递归计算斐波那契数列*a:题目分析* 1 1 2 3 5 8 13 21

*从第三项开始,后面的每一项都等于前面两项的和,第一项和第二项的值为1,作为程序的出口*b: 案例代码/** 方法的递归调用

* 方法自己调用自己

* 适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化

* 注意:

* 递归一定要有出口, 必须可以让程序停下

* 递归次数不能过多

* 构造方法,禁止递归*/

public classDiGuiDemo {public static voidmain(String[] args) {

System.out.println(getFBNQ(12));

}/** 方法递归,计算斐波那契数列

**/

public static int getFBNQ(intmonth){if( month == 1)return 1;if( month == 2)return 1;return getFBNQ(month-1)+getFBNQ(month-2);

}

}

20遍历目录下的所有java文件

*A: 遍历目录下的所有java文件*a: 案例代码public class MyJavaFilter implementsFileFilter {public booleanaccept(File pathname) {//判断获取的是目录,直接返回true

if(pathname.isDirectory())return true;return pathname.getName().toLowerCase().endsWith(".java");

}

}/** 遍历目录,获取目录下的所有.java文件

* 遍历多级目录,方法递归实现

* 遍历的过程中,使用过滤器*/

public classFileDemo1 {public static voidmain(String[] args) {

getAllJava(new File("c:\\demo"));//new File("c:\\demo").delete();

}/** 定义方法,实现遍历指定目录

* 获取目录中所有的.java文件*/

public static voidgetAllJava(File dir){//调用File对象方法listFiles()获取,加入过滤器

File[] fileArr = dir.listFiles(newMyJavaFilter());for(File f : fileArr){//对f路径,判断是不是文件夹

if(f.isDirectory()){//递归进入文件夹遍历

getAllJava(f);

}else{

System.out.println(f);

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值