Java文件操作

本文详细介绍了Java中FileInputStream的基本方法,如读取字节,以及File类的功能,包括访问文件属性、创建和删除文件、目录操作等,并展示了如何使用FileFilter过滤目录内容。

文件内容的读写
FileInputStream
常用方法

修饰符及
返回值类
型    方法签名    说明
int    read()    读取一个字节的数据,返回 -1 代表已经完全读完了
int    read(byte[] b)    最多读取 b.length 字节的数据到 b 中,返回实际读到的数
量;-1 代表以及读完了
int    read(byte[] b,
int off, int len)    最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返
回实际读到的数量;-1 代表以及读完了
void    close()    关闭字节流

一、java.io.File

java.io.File类用于描述文件系统中的一个文件或目录 该类可以:

  • 1、访问文件或目录的属性信息
  • 2、访问一个目录中的所有子项
  • 3、操作文件或目录(创建、删除)

该不可以:

  • 访问文件的具体内容

开发时注意不同操作系统的路径的表示方法的差异(如'/'或'\'),使用File.separator可以屏蔽不同操作系统的路径的差异。

1.读取文件属性

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 ​
 /**
  * Description:
  * java.io.File
  */
 ​
 public class FileDemo1 {
 ​
     public static void main(String[] args) {
         /*
          * 尽量不写绝对路径。
          * 常用的是相对路径:
          * 1、相对于项目目录(当前目录)
          * 2、相对于类加载目录(实际开发更常用)
          */
         File file = new File("." + File.separator + "test.txt");   //分隔符
         System.out.println(file);
         /*
          * 获取当前文件的属性信息
          */
         //获取文件名(不包括文件路径)
         String name = file.getName();
         System.out.println("文件名:"+name);
 ​
         //获取文件大小(字节)
         long length = file.length();
         System.out.println("文件大小(字节):"+length);
 ​
         //最后修改时间(毫秒数)
         long time = file.lastModified();
         System.out.println(time);
         Date date = new Date();
         date.setTime(time);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss");
         String str = sdf.format(date);
         System.out.println(str);
 ​
         /*
          * 可读、可写、可执行、隐藏
          */
         file.canRead();
         file.canWrite();
         file.canExecute();
         file.isHidden();
 ​
         System.out.println(file.getPath());
     }
 ​
 }

2.创建文件

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 import java.io.IOException;
 ​
 /**
  * Description:
  * 使用File创建文件
  *
  */
 public class FileDemo2 {
 ​
     public static void main(String[] args) throws IOException {
         /*
          * 在当前目录下创建demo.txt文件     ;不能再没有的目录里创建文件,父目录不存在会报错
          * 不写“./”就是默认在当前目录
          */
         File file = new File("." + File.separator + "demo.txt");
         /*
          * 判断file表示的文件或目录是否存在
          */
         if(! file.exists()){
             boolean flag = file.createNewFile(); //没有判断也不会覆盖
             System.out.println("创建成功" + flag);
         }else{
             System.out.println("创建失败");
         }
     }
 ​
 }
 ​

3.删除文件

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 ​
 /**
  * Description:
  * 删除文件
  *
  */
 public class FileDemo3 {
 ​
     public static void main(String[] args) {
         /*
          * 将当前目录中的demo.txt删除; 不会放入回收站
          */
         File file = new File("demo.txt");
         if(file.exists()){
             file.delete();
             System.out.println("已删除");
         }else{
             System.out.println("文件不存在");
         }
     }
 ​
 }
 ​

4.创建一个目录

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 ​
 /**
  * Description:
  * 创建一个目录
  *
  */
 ​
 ​
 public class FileDemo4 {
 ​
     public static void main(String[] args) {
         /*
          * 在当前目录下创建一级目录demo
          */
         File file =  new File("demo");
 ​
         if(! file.exists()){
             file.mkdir();  //mkdir只能创建一级目录,不能创建多级目录,也不报错
             System.err.println("创建成功");
         }else{
             System.out.println("目录已经存在");
         }
     }
 ​
 }
 ​

5.创建多级目录

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 ​
 /**
  * Description:
  * 创建多级目录
  *
  */
 ​
 public class FileDemo5 {
 ​
     public static void main(String[] args) {
         /*
          * 创建多级目录a/b/c/d/e
          */
         File file = new File("a" + File.separator +"b" + File.separator +"c" + File.separator +"d" + File.separator +"e" );
         if(! file.exists()){
             file.mkdirs();
             System.out.println("创建成功");
         }else{
             System.out.println("目录已存在");
         }
     }
 }
 ​

6.删除目录

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 ​
 /**
  * Description:
  * 删除目录
  *
  */
 public class FileDemo6 {
 ​
     public static void main(String[] args) {
         File dir = new File("demo");
         if(dir.exists()){
             dir.delete();  //只能删空目录,非空目录删不掉,也不报错
             System.out.println("已删除");
         }else{
             System.out.println("不存在");
         }
     }
 }

7.获取一个目录的所有子项

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 ​
 /**
  * Description:
  * 获取一个目录的所有子项
  *
  */
 public class FileDemo7 {
 ​
     public static void main(String[] args) {
         /*
          * 获取当前目录中的所有内容
          */
         File file = new File(".");
         /*
          * boolean isDirectory()
          * 判断是不是目录
          */
         if(file.isDirectory()){
             /*
              * File[] listFiles()
              * 查看当前File表示的目录中的所有子项
              * 每个子项以一个File对象表示,所有子项存入一个File对象数组,并返回
              */
             File[] sub = file.listFiles();
             for(File f : sub){
                 System.out.println(f.getName());
             }
         }
     }
 }

8.过滤一个目录中的部分子项

 package com.wuxiaolong.file.directory;
 ​
 import java.io.File;
 import java.io.FileFilter;
 ​
 /**
  * Description:
  * 获取一个目录中的部分子项
  * File支持一个重载的listFile方法,要求传入一个文件过滤器FileFilter(是接口),这样只会返回该目录中满足该过滤器要求的子项
  */
 public class FileDemo8 {
 ​
     public static void main(String[] args) {
         /*
          * 仅仅获取文件
          */
         File dir = new File("." );
         System.out.println(dir);
         File[] sub = dir.listFiles(
                 new FileFilter(){//内部类
                     @Override
                     public boolean accept(File file){
                         System.out.println("正在过滤:" +file.getName());
                         //return file1.isFile();    //获取文件,不要目录
                         //return file1.getName().endsWith(".pom");  //获取以".xml"结尾的文件
                         return file.getName().startsWith(".");      //获取以"."开头的文件
                     }
                 }
         );
         for(File tmp : sub){
             System.out.println(tmp.getName());
         }
     }
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值