文件的上传与下载(二)


1. java.io.File类

java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称,大小等),不能用于表示文件内容的访问

public static void main(String[] args){
        //使用双斜杠,因为有转义字符
        File file1 = new File("E:\\FileDemo");
        System.out.println(file1.exists());
        if(!file1.exists()){
            file1.mkdir();//创建一级目录   file.mkdirs()创建多级目录

        }

        System.out.println("是否是目录"+file1.isDirectory());
        System.out.println("是否是文件"+file1.isFile());

        File file2 = new File("E:\\FileDemo\\1.txt");
        System.out.println(file2.exists());
        if(!file2.exists()){
            try{
                file2.createNewFile();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        System.out.println("是否是目录"+file2.isDirectory());
        System.out.println("是否是文件"+file2.isFile());

        //常用的File对象的API
        System.out.println(file1);//直接显示file.toString()的内容  E:\\FileDemo
        System.out.println(file1.getName());//FileDemo
        System.out.println(file2.getName());//1.txt
        System.out.println(file2.getParent());//E:\\FileDemo

    }

ps:

  • mkdir()创建的是目录,即使路径上带着后缀名,最后也是文件夹。例如 File file2 = new File("E:\\FileDemo\\1.txt"),也是生成文件名为file.txt的文件夹,而不是 txt 文件。
  • createNewFile() 用来创建文件

2. File文件目录的遍历操作

这里写图片描述

package com.cn;
import java.io.File;
import java.io.IOException;

//列出File一些常用操作,比如过滤,遍历等操作
public class FileUtils {

 public static void main(String[] args) throws IOException {
   File dir= new File("E:\\");
    if(!dir.exists()){
        throw new IllegalArgumentException("目录" +dir+ "不存在");
    }

    if (!dir.isDirectory()){
        throw new IllegalArgumentException(dir+ "不是目录");
    }
    listDirectory1();
    listDirectory2();
    listDirectory3();
}

2.1 显示该文件夹下一层的所有目录名,包括文件,压缩包的名字

  public static void listDirectory1(File dir) throws IOException{
       String[] filesNames =dir.list();//返回的是字符串数组
        for (String string:filesNames){
            System.out.println(string);
        } 
 }

结果:
1.rar
2.mp3
3.txt
file

2.2 如果要遍历子目录下的内容,就需要构造成File对象做递归操作,File提供了直接返回

    public static void listDirectory2(File dir) throws IOException{
        File[] files = dir.listFiles();
        //显示该文件夹下一层的所有目录完整路径
        for (File file:files){
            System.out.println(file);
        }
 }   

结果:
E:\FileDemo\1.rar
E:\FileDemo\2.mp3
E:\FileDemo\3.txt
E:\FileDemo\file

2.3 显示该目录下所有的子目录中的文件,使用递归


  public static void listDirectory3(File dir) throws IOException{
   File[] files = dir.listFiles();
   //只显示文件,不显示目录
    if(files!=null && files.length>0){
        for (File file:files){
            if(file.isDirectory()){
                listDirectory3(file);
            }else{
                System.out.println(file);
            }
        }
    }
 }   

结果:
E:\FileDemo\1.rar
E:\FileDemo\2.mp3
E:\FileDemo\3.txt
E:\FileDemo\file.txt

猜你喜欢

转载自blog.csdn.net/cherry_xiu/article/details/81083148