侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

java IO操作 与 File 获取文件或文件夹的大小,可读,等属性!!!

Java  /  管理员 发布于 5年前   686

类 File

File是指文件和目录路径名的抽象表示形式。

1,何为文件:

标准文件(txt doc mp3...)

目录文件(文件夹)

虚拟内存文件

 

2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都在java.io的输入输出包中,我们可以直接创建一个文件对象后 再来 调用

 

 

3,使用File类来测试:

package file0521;import java.io.File;public class FileDemo {public static void main(String[] args) {//获取文件的路径String path = "abc\\a.txt";//用对象表示可以操作对象File file = new File(path);//创建文件夹boolean b=file.mkdirs();System.out.println(b);//获取绝对路径String path1 = file.getAbsolutePath();//File path1 = file.getAbsoluteFile();System.out.println("绝对路径 :"+path1);//获取相对路径String path2 = file.getPath();System.out.println("相对路径 :"+path2);//获取文件的名称String name=file.getName();System.out.println("getName:"+name);long len = file.getFreeSpace();System.out.println("getfree:"+len);}}

 

运行结果false绝对路径 :E:\java\文件的处理\abc\a.txt相对路径 :abc\a.txtgetName:a.txtgetfree:114963243008

 

 

分析:String path = "abc\\a.txt";是先获取这个路径 \\是分隔符号

创建File的对象,将路径作为其参数;由于文件夹已经是存在的所以返回为false;

文件的描述;使用字符串表示文件的路径

  使用对象表示对象

 

  绝对路径:从根磁盘开始计算的路径

  相对路径:某一文件相对于当前文件的路径

后面的应该能看懂了;

 

 

 

 

2,使用File来判断输入的路径是文件还是文件夹?

    思路分析:

 

a,写一个方法,将需要所有关的全部写入到这个方法中封装起来  

b,创建File的对象并将路径传入其作为参数

c,判断路径是否存在

d,如果存在就保存在数组中

f,判断数组中是否为空

e,遍历数组

G,如果是文件就+1

h,入伏哦是文件夹就+1,文件夹中如果还有文件夹就调用递归

 

代码如下:

package file0521;/** * 编写一个统计文件标准文件的个数 * @author Administrator * */import java.io.*;public class TestFile {public static void main(String[] args) {String path = "F:\\java开发实例1200";int count =countFile(path);System.out.println("文件有"+count+"个");}static int result= 0;public static int countFile(String path){//创建file的对象 File file  = new File(path); //判断路径是否存在  if(!file.exists()){  System.out.println("提供的路径不存在!");  return 0;  }  //将的得到的路径存储到数组中  File[] fs =file.listFiles();    //判断得到的是否是一个文件  if(fs==null){  System.out.println("提供的路径不是一个标准文件");  return 0;  }      //遍历数组  for(int i =0;i<fs.length;i++){  File f = fs[i];  String str = f.getAbsolutePath();      if(f.isFile()){  result++;  System.out.println("找到文件"+str);    }else if(f.isDirectory()){                 //调用递归来处理  result +=countFile(str);  } }  return result;}}

 

运算结果:文件有240489911个

 

递归;程序调用自身的编程技巧称为递归,就是自己调用自己的方法等,递归有时候可以用循环来代替,

 

 

 

 

4,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间

(第一版)分析:将文件夹和文件的判断写入一个static方法中,将共同的属性又写一个静态的方法,然后分别条用属性的方法

 

package file0521;import java.io.*;/** *  * @author *  统计文件文件或者文件夹的属性 * */public class Demofile {public static void main(String[] args) {String path = "E:\\c语言\\c 练习\\interface.cpp";wenjian(path);}public static void wenjian(String path) {File file = new File(path);// 文件是否存在// boolean f1 = file.exists();if (file.exists()) {// 判断是不是一个isFile();if (file.isFile()) {System.out.println("文件!!!");shuxing(file);} else if(file.isDirectory()){System.out.println("文件夹!!");shuxing(file);}else{System.out.println("类型无法判断!!!");}} else {System.out.println("文件不存在!请重新输入路径");}}public static void shuxing(File file) { long len= file.length();    System.out.println("文件的长度"+len);    //最后一次修改的时间    long lasttime = file.lastModified();    System.out.println("最后一次修改的时间"+lasttime);    //是否隐藏    boolean f3 =file.isHidden();    System.out.println("是否隐藏"+f3);    //是否可写    boolean f4 = file.canRead();    System.out.println("是否可读"+f4);    //是否可读    boolean f5=file.canWrite();    System.out.println("是否可读"+f5);    //获取绝对路径    String str1 = file.getAbsolutePath();    System.out.println("获取绝对路径"+str1);    //获取文件的名称String name=file.getName();System.out.println("获取文件的名称"+name);//返回空闲的空间long freespace = file.getFreeSpace();System.out.println("返回空闲的空间"+freespace);}}

 

运行结果:(没有得到文件及文件夹的个数)文件!!!文件的长度2900最后一次修改的时间1395579617531是否隐藏false是否可读true是否可读true获取绝对路径E:\c语言\c 练习\interface.cpp获取文件的名称interface.cpp返回空闲的空间114963243008

 

 

 

5,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间(本方法可以判别文件夹和文件的个数,但是没有都会判断 其属性,导致运行结果非常乱)

 

分析:将文件夹和文件的判断写入一个static方法中,在方法中判断文件和文件夹的个数,将共同的属性又写一个静态的方法,然后分别条用属性的方法

 

代码如下:

package file0521; import java.io.File;public class Filezuoye {static int count;//文件的个数static int dir;//目录的个数static long size;//大小public static void main(String[] args) {String path ="C:\\Users\\Administrator\\Desktop\\html";shuxing(path);System.out.println("统计完毕,共有" + count + "个文件");System.out.println("共有" + dir + "个文件夹");System.out.println("总大小" + size + "B");}public static void shuxing(String path){File file = new File(path);if(!file.exists()){System.out.println("这不是一个文件!");return;}//将得到的子文件保存到数组里面File[] f =file.listFiles();if(f==null){System.out.println("不是正确的路径");}for(int i = 0;i<f.length;i++){File fs=f[i];//显示获取到的路径String str = fs.getAbsolutePath();//如果是文件if(fs.isFile()){count++;//累加获取到的文件的大小size = size + fs.length();System.out.println("文件的路径 : "  + str);same(file);}else if(fs.isDirectory()){dir++;//如果是文件夹就调用用递归来重新统计shuxing(str);same(file);}else{}}}public static void  same(File file){//最后一次修改的时间    long lasttime = file.lastModified();    System.out.println("最后一次修改的时间"+lasttime);    //是否隐藏    boolean f3 =file.isHidden();    System.out.println("是否隐藏"+f3);    //是否可写    boolean f4 = file.canRead();    System.out.println("是否可读"+f4);}}

 

 

运行结果:文件的路径 : C:\Users\Administrator\Desktop\html\webpage\css\text.css最后一次修改的时间1399284088057是否隐藏false是否可读true最后一次修改的时间1399284108953是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\ad1.gif最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\arrow_list.gif最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\banner.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\footbg.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link1.gif最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link2.gif最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg2.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\titlebg.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\title_nt_1.jpg最后一次修改的时间1399284035123是否隐藏false是否可读true最后一次修改的时间1399284108953是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\webpage\index.html最后一次修改的时间1399284108953是否隐藏false是否可读true最后一次修改的时间1400502634106是否隐藏false是否可读true文件的路径 : C:\Users\Administrator\Desktop\html\网页.zip最后一次修改的时间1400502634106是否隐藏false是否可读true统计完毕,共有13个文件共有3个文件夹总大小53794B

 

 

结果分析:运行的结果每次都会调用属性,有多少个文件盒文件夹就会调用多少次;导致程序的可读性较差

 

 

 

 

 

 

 

 


  • 上一条:
    java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针
    下一条:
    JAVA IO FileInputStream和FileOutputStream,字节流的打包输出
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客