java i/o系统

输入/输出(input/output)是指对某个物理或逻辑设备或某种环境进行数据的输入和输出。

  • File类

不同操作系统的路径名称表示是有差别的,如在windows中,一个可能的路径名为“E:\JSP\bin”,而Linux下的路径名可能为“/home/JSP/bin”。windows的路径使用UNC(Universal Naming Convention)路径名,以“\”开始的目录表示上下文环境所在目录的硬盘跟目录。如果没有以“\”作为路径的开始,则表示相对于当前工作目录的路径,并且通过“盘符(C/D/E):”形式表示硬盘指定。而Linux系统没有windows系统硬盘驱动器的概念,它的路径以“/”开始,表示从根目录开始的绝对路径,不以“/”开始的路径是相对于当前路径的相对路径。
注意:在java中,无论是文件还是目录,都是用File类的实例表示。

1、文件或目录的生成

File类的构造函数
public File(String path)

如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。

File类的构造函数
public File(String path,String name)

path是路径名,name是文件名。

File类的构造函数
public File(File dir,String name)

dir是路径名,name是文件名。

2、文件名的处理

//得到一个文件的名称(不包括路径)
String getName()
//得到一个文件的路径名
String getPath()
//得到一个文件的绝对路径名
String getAbsolutePath()
//得到一个文件的上一级目录名
String getParent()
//将当前文件名更名为给定文件的完成路径
String renameTo(File newName)

3、文件属性测试

//测试当前File对象所指示的文件是否存在
boolean exists()
//测试当前文件是否可写
boolean canWrite()
//测试当前文件是否可读
boolean canRead()
//测试当前文件是否是文件(不是目录)
boolean isFile()
//测试当前文件是否是目录
boolean isDirectory()

4、普通文件信息和工具

//得到文件最近一次修改的时间
long lastModified()
//得到文件的长度,以字节为单位
long length()
//删除当前文件
boolean delete()

5、目录操作

//根据当前对象生成一个由该对象指定的路径
boolean mkdir()
//列出当前目录下的文件
String list()

6、应用

import com.sun.org.apache.xpath.internal.SourceTree;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.logging.LogRecord;

/**
 * @ 描 述 : 文件操作
 * @ 作 者 : 一念〃
 * @ 时 间 : 10:40 2018/11/18
 * @ 备 注 :
 */
public class FileTest {
    public void readFileList(File file, Filter filter){
        //判断file是否为目录
        if(file.isDirectory()){
            //列出所有的文件及目录
            File[] files = file.listFiles();//创建目录数组
            //通过数组创建数组列表
            ArrayList<File> fileArrayList = new ArrayList<File>();
            //for循环变量数组
            for (int i = 0;i<files.length;i++){
                //先列出目录
                if(files[i].isDirectory()){//判断是否为目录
                    //输出路径名
                    System.out.println("["+files[i].getPath()+"]");
                    readFileList(files[i],filter);//递归调用readFileList方法
                }else{
                    //文件先存入fileList,待会再列出
                    fileArrayList.add(files[i]);
                }
            }
            //列出文件
            for (File f : fileArrayList){
                readFileList(f,filter);//调用readFileList方法
                System.out.println();//换行
            }
        }else if(file.isFile()){
            //当file为文件时
            fileDesc(file);//调用fileDesc方法
        }
    }

    public void fileDesc(File file){
        if(file.isFile()){
            //判断是否为文件
            System.out.println(file.toString()+"\n该文件");//输出字符串信息
            System.out.println(file.canRead()?"可读":"不可读");//判断文件是否可读
            System.out.println(file.canWrite()?"可写":"不可写");//判断文件是否可写
            System.out.println(file.length()+"字节");//输出字节数
        }
    }

    public static void main(String[] args) {
        String filename = "E:\\JAVA";//给一个路径
        File file = new File(filename);//创建并初始化由文件名决定的文件对象

        Filter filter = new Filter("java");//创建并初始化文件过滤器
        //创建实例,调用readFileList方法
        new FileTest().readFileList(file,filter);
        }
}
class Filter implements FilenameFilter{

    String extent;

    //声明实现Filter类的构造
    Filter(String extent){
        this.extent = extent;
    }

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith("."+extent);//返回文件后缀
    }
}

创建文件:
https://blog.csdn.net/myuhua/article/details/82223131

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值