File类

注:可能有如下三种情况:文件、文件夹、不存在的文件或文件夹

要知道的:在计算机里面的文件是存储在硬盘上,Java虽然需要和文件打交道,但是它是不可以直接对硬盘进行操作,而是通过虚拟机和我们的操作系统进行交互,所以File代表的是Java和文件的一种联系。因此这个文件可能存在也可能不存在,它是只是一个抽象的概念。

File对象的构建

//File f = new File(String path);直接构建
File f1 = new File("E:/java笔记/java导读.png");
//File f = new File(String parent,String child);父子构建
File f2 = new File("E:/java笔记","java导读.png");
//File f = new File(File p , String c);父对象子名称
File f3 = new File(new File("E:/java笔记"),"java导读.png");

File文件名、路径的获取

/**
* 获取File对象的名称
* String name = f.getName();
* 获取File对象的路径
* String path = f.getPath();构建File对象若使用的是相对路径则返回相对路径反之返回绝对路径
* String path = f.getAbsolutePath();返回File对象的绝对路径
* String path = f.getPatent();返回File对象父级路径,如果没有则返回null
*/ String name = f1.getName();
System.out.println("f1的name:"+ name);//f1的name:java导读.png
String path = f1.getPath();
System.out.println("f1的path:"+path);//f1的path:E:\java笔记\java导读.png
String pathParent = f1.getParent();
System.out.println("f1的parent路径:"+pathParent);//f1的parent路径:E:\java笔记

文件的状态

/**
* 判断文件的状态
* f.exists();
* f.isFile();
* f.isDirectory();
*/ boolean exist = f1.exists();
System.out.println("f1是否存在:"+exist);//f1是否存在:true
boolean isFile = f1.isFile();
System.out.println("f1是否是文件:" + isFile);//f1是否是文件:true
boolean isDirectory = f1.isDirectory();
System.out.println("f1是否是文件夹:" + isDirectory);//f1是否是文件夹:false

文件的其他操作

/**
* 其他的信息
* long s = f.length();返回的文件的字节数,当为0是有两种情况:一:文件字节数为0;二:是文件夹
* Boolean b = file.createNewFile();当文件不存在是才创建成功
* Boolean b = file.delete();删除已经存在的文件
*/
System.out.println("f1的文件的字节数:"+ f1.length());
File newFile = new File("E:/java笔记/1.txt");
boolean isCreate = newFile.createNewFile();
System.out.println("是否创建成功:"+isCreate);
boolean delete = newFile.delete();
System.out.println("是否删除成功:"+delete);

创建文件夹

/**
* 创建文件夹:
* boolean b = f.mkdir();必须确保上级目录存在,否则创建失败
* boolean b = f.mkdirs();上级目录可以不存在,不存在则一同创建。
*/
File file = new File("E:/java笔记/mkdirTest");
boolean ismkdir = file.mkdir();
System.out.println("file创建目录是否成功:"+ ismkdir);
File file1 = new File("E:/java笔记/Test/mkdirsTest");
boolean ismkdirs = file1.mkdirs();
System.out.println("file2创建多级目录是否成功:"+ ismkdirs);

列出下一级

实战练习1:列出子孙级目录及名称

思路分析:

/**
* @描述:递归打印子孙级目录和文件的名称
*/
public class fileList {
public static void main(String[] args) {
File file = new File("E:/Linux笔记");
printName(file,1);
}
/**
*
*@描述:打印
* @param f 要进行显示的File对象
* @param count 控制显示的格式
*/
public static void printName(File f, int count){
//控制显示格式
for(int i = 0; i < count; i++){
System.out.print("-");
}
//打印
System.out.println(f.getName());
//递归头
if(f == null || !f.exists()){
return;
}else if(f.isDirectory()){
File[] lists = f.listFiles();
for(File listFile : lists){
//递归体
printName(listFile,count+1);
}
}
}
}
/*
*bank
*-Account.java
*--Bank.java
*---CheckingAccount.java
*----Customer.java
*-----SavingAccount.java
*------TestBanking.java
*/

实战练习2:列出文件及其子孙文件的总大小

注意:在判定file对象存在并且不为空的情况下还有判定file是文件才可以计算大小,文件夹是没有的大小。(所谓“文件夹的大小也是有文件夹里面的文件的总大小”)。

	/**
*
*@描述:计算文件内容的大小(也就是计算总文件的大小)
* @param file
*/
public class list {
public static void main(String[] args) {
File file = new File("E:\\Java workspace\\exercise");
countLength(file);
System.out.println(length);
} private static long length = 0;
public static void countLength(File file){
//判断File对象是否存在
if(file != null && file.exists()){
//存在:判断File对象是否是文件(只有是文件的情况下才能计算大小,目录是没有大小的)
if(file.isFile()){
length +=file.length();
}else{
//File对象存在但是不是文件:当File为目录,遍历其子孙并统计大小
File[] files = file.listFiles();
for(File f :files){
countLength(f);
}
} }
}

实战练习2_1:利用面向对象的思想计算文件夹的大小

public class countDir {
//存放目录文件的大小
long length = 0;
//文件的路径
String path ;
//构建File对象
File file ;
//初始化构造器
public countDir(String path) {
this.path = path;
//初始化源
this.file = new File(path);
//计算大小
count(this.file);
}
/**
* @return the length
*/
public long getLength() {
return length;
}
/**
*
*@描述:计算File对象大小
* @param file
*/
public static void main(String[] args) {
countDir test = new countDir("E:/Java workspace/exercise/src/bank");
System.out.println("文件夹的大小为:"+test.getLength());
} private void count(File file) {
if(file != null && file.exists()){
if(file.isFile()){
length += file.length();
}else{
File[] files = file.listFiles();
for(File f : files){
count(f);
}
}
}
}
}

File初识和练习的更多相关文章

  1. 【File】文件操作(初识文件操作一)

    一,初识文件流 看到标题就知道接下来的所有操作对象都是面对文件进行的.那么问题来了.在java中目录是不是也属于文件呢?答案是yes.既然目录也属于文件,那么对于目录跟文件的区分就显现出来了.在接下来 ...

  2. 初识html5 File API实现带有进度提示的文件上传

    Html5终于解决了上传文件的同时显示文件上传进度的老问题.现在大部分的网站用Flash去实现这一功能,还有一些网站继续采用Html <form>with enctype=multipar ...

  3. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  4. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  5. MongoDB【第一篇】MongodDB初识

    NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ...

  6. 【读书笔记《Bootstrap 实战》】1.初识Bootstrap

    作为Web前端开发框架,Bootstrap为大多数标准的UI设计常见提供了用户友好.扩浏览器的解决方案. 1.下载Bootstrap 打开官方网址 http://getbootstrap.com/ 进 ...

  7. 30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集

    一:泛型    关于泛型我自己也不是很好的理解,但是具体的运用还是可以的,可以这样的理解,我们定义一个数组,但是不知道将来它是保存什么类型的值,很是矛盾,这个时候泛型就出现了,它可以解决这个场景,li ...

  8. Java初识

    基础概念 特点: 完全面向对象,动态 解释性,简单.易移植,跨平台 安全健壮,高性能 多线程,分布式 三种核心机制: Java虚拟机 Java Virtual Machine 垃圾收集机制 Garba ...

  9. 【Bootstrap】1.初识Bootstrap

    作为Web前端开发框架,Bootstrap为大多数标准的UI设计常见提供了用户友好.扩浏览器的解决方案. 1.下载Bootstrap 打开官方网址 http://getbootstrap.com/ 进 ...

随机推荐

  1. 调试dump文件

    1.设置好pdb文件和源代码路径 为了能正确分析Dump文件,我们必须要指定和程序一起出来的PDB文件,如果程序重新被编译了一次,即使代码没有任何变化,之前的PDB文件我们不能再继续使用.

  2. [UNITY 5.4 UGUI] 模态对话框

    1.建立两个画布 a.背景界面 b.置顶界面(添加一个 panel 控件) 2.修改置顶界面中 panel ,添加属性 [Canvas Group] 3.根据界面设计情况修改透明度,色彩,图片

  3. Python爬虫与数据分析之进阶教程:文件操作、lambda表达式、递归、yield生成器

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  4. Spring Boot实现文件下载功能

    我们只需要创建一个控制器(Controler)文件,即Controller目录下的File_Download.java,其完整目录如下: @Controller public class File_D ...

  5. Python第7天

    其他内置函数: abs() 绝对值 all()均为真则为True any()有一个为真就为True bin()十进制->二进制 bool() 空,0,None为False,其余为True byt ...

  6. C语言--第01次作业

    分支.顺序结构 1.本章学习总结 1.1思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 本周学习了分支.顺序结构,学到的大部分都在思维导图介绍了,不懂的地方例如有switch的运 ...

  7. 发现一个好工具RenderDoc

    逛VULKAN官网时,工具中提到RenderDoc这个东西,百度了下,是专为图形程序员用的,可以集成到VS,或U3D中,收藏先. 参考链接

  8. 软件工程小组讨论设计NABCD

    项目名称:失物招领平台 项目工作小组:冰淇淋队 项目简介:目前同学们丢了东西都qq空间转发或者某个特定的qq群发消息,qq空间转发浪费了别人的时间,qq群发消息也浪费了别人的时间.怎么样才能浪费最少的 ...

  9. iframe刷新

    <div title="基本信息" style="padding:2px; ">       <iframe id="newsrc& ...

  10. ArrayList 加强版的数组

    ArrayList 泛型类. 描述:可以自动扩容的数组. 特点:插入和删除慢,查找快. 现在来创建一个 要放String的ArrayList ArrayList list = new ArrayLis ...