黑马程序员---IO流一

IO流一

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

1.File类

1.1 概述

1.1.1 File类出现的必要性

存储在变量、数组和对象中的数据是暂时的,当程序终止他们时就会丢失,为了能够永久地保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件,这些文件可以移动,传送,亦可以被其他程序使用。由于数据存储在文件中,所以我们要掌握它,就需要学习一种与文件密切相关的类,叫做File类。

定义

File类描述的是一个文件或文件夹(也可叫目录)。

1.1.2构造一个File类的实例(File的构造函数)

注:

1)File 对象没有无参构造方法,创建对象需要传参。

2)创建File对象需要导包,import java.io.File

3)File类的对象,既可以代表文件也可以代表文件夹。

1.2 路径

   路径就是文件或文件夹所在的位置

1.2.1 路径分割符

 上下级文件夹之间使用分隔符分开。

 在windows中分隔符为‘\’,在Unix/Linux中分隔符为‘/’

专业的做法是File.separatorChar – 这个值会根据系统得到相应的分割符。

 如 new File(“C:”+File.separatorChar+ “file.txt’);

1.2.2 绝对路径与相对路径

对于UNIX平台,绝对路径名的前缀是“/”。相对路径名没有前缀。

绝对路径

对于Windows平台,绝对路径的前缀由驱动器号和一个“:”组成,例:“c:\\...”。相对路径没有盘符前缀

相对路径

    相对路径是指相对于某位置的路径,是指相对于当前目录。在执行Java程序时,相对路径为执行javav命令时当前所在的目录。

注:一般在使用时,建议使用绝对路径,相对路径容易出问题

1.3 File类的常用方法


代码实例: 

1)列出指定目录下的所有子文件名与所有子目录名

package com.ping.File;
import java.io.File;
public class FileDemo1 {
     /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
//指定目录还有系统指定的分隔符
        listAllFilesAndDir("E:"+File.separatorChar + "Java基础资料");  
    }
//将方法封装
    public static void listAllFilesAndDir(String path){ 
        File dir = new File(path);
//将指定文件夹里的文件封装成一个文件数组
        File [] names = dir.listFiles();             
        System.out.println("该目录里有:");
//循环输出文件名
        for(int i = 0 ; i < names.length ; i ++){   
            File file = names[i];
            System.out.println(file.getName());
        }
    }
}
输出
该目录里有:
java毕向东java基础
学通Java的24堂课
学通Java的24堂课_120集大型多媒体教学视频.iso
魔乐科技

2)列出指定目录中所有的子文件名与所有的子目录名,目录与文件分开输出

package com.ping.File;
import java.io.File;
public class FileDemo1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
//指定目录还有系统指定的分隔符
        listAllFilesAndDir("E:"+File.separatorChar + "Java基础资料");  
    }
//将方法封装
    public static void listAllFilesAndDir(String path){ 
        File dir = new File(path);
//将指定文件夹里的文件封装成一个文件数组
        File [] names = dir.listFiles();             
        System.out.println("该目录里有:");
        System.out.println("文件");
//循环输出文件夹中的文件
        for(int i = 0 ; i < names.length ; i ++){   
            File file = names[i];
//判断是否是文件
            if(file.isFile()){                     
                System.out.print( file.getName());
            }
        }
        System.out.println("\n文件夹");
//循环输出文件夹中的子文件夹
        for(int i = 0 ; i < names.length ; i ++){
            File files = names[i];
//判断是否是文件夹
            if(files.isDirectory()){          
                System.out.println(files.getName() );
            }
        }
    }
}
输出:
该目录里有:
文件
学通Java的24堂课_120集大型多媒体教学视频.iso
文件夹
java毕向东java基础
学通Java的24堂课
魔乐科技
3)列出目录中所有扩展名为.java的文件
package com.ping.File;
import java.io.File;
public class FileDemo2 {
    public static void main(String [] args){
        String path = "H:" + File.separatorChar + "day13";
        File file = new File(path);
        listFiles(file,"java");
    }
    public static void listFiles(File dir , String extension){
//将目录文件放到一个数组中
        File [] files = dir.listFiles(); 
//输出目录               
        for(int i = 0 ; i < files.length; i ++ ) {  
            File file = files[i];
//满足条件即输出
            if(file.getName().endsWith(extension)){  
                System.out.println(file.getName());
            }
        }
    }
}
输出:
CollectionDemo.java
CollectionDemo_2.java
CollectionDemo_3.java
CollectionDemo_4.java

4)用FilenameFIlter接口写一个工具类,这样就可以过滤各种后缀的文件

package com.ping.File;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo3 {
    /**
     * @param args
     */
public static void main(String[] args) {
        // TODO Auto-generated method s
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值