Day20

01 File概述
02 File对象功能-创建和删除
03 File对象功能-判断
04 File对象功能-获取
05 File对象功能-文件列表1
06 File对象功能-文件列表2
07 列出目录下所有内容-递归
08 列出目录下所有内容-带层次
09 删除带内容的目录

01 File概述

File类
用来将文件或者文件夹封装成对象
方便对文件与文件夹进行操作
File对象可以作为参数传递给流的构造函数
了解File类中的常用方法。

public static final String separator:与系统有关的默认名称分隔符,它被表示为一个字符串。
 import java.io.*;
public class FileDemo
{
public static void main(String[] args)
{
consMethod(); }
//创建File对象
public static void consMethod()
{
//将q.txt封装成File对象。可以将已有的和未出现的文件或者文件夹封装成对象。
File f1=new File("q.txt"); File f2=new File("d:\\abc","w.txt"); File d=new File("d:\\abc");
File f3=new File(d,"e.txt"); sop("f1:"+f1);
sop("f2:"+f2);
sop("f3:"+f3); //File.separator是跨平台的。
File f4=new File("d:"+File.separator+"abc"+File.separator+"r.txt"); }
public static void sop(Object obj)
{
System.out.println(obj);
}
}

02 File对象功能-创建和删除

boolean createNewFile():当且仅当不存在此指定名称的文件时,创建一个新的空文件。
boolean delete():删除此抽象路径名表示的文件或目录。
void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

 /*
File类常见方法:
1.创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false
和输出流不一样,输出流对象建立文件,如果文件已经存在,则会覆盖。
2.删除
boolean delete():删除失败返回false
void deleteOnExit:在程序退出时删除指定文件。
*/
import java.io.*;
public class FileDemo2
{
public static void main(String[] args) throws IOException
{
method(); } public static void method()throws IOException
{
File f=new File("file.txt");
sop("create:"+f.createNewFile()); }
public static void sop(Object obj)
{
System.out.println(obj); }
}

03 File对象功能-判断

创建文件夹:
boolean mkdir():创建一级文件夹
boolean mkdirs():创建多级文件夹
判断:
boolean exists():文件是否存在。
boolean canExecute():测试文件是否可执行
isFile():是否是文件。
isDirectory():是否是目录
isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
isAbsolute():测试此抽象路径名是否为绝对路径名。

04 File对象功能-获取

getName():返回文件或者目录的名称。
getPath():将此抽象路径名转换为一个路径字符串。
getParent():返回父目录的路径字符串;如果此路径名没有指定父目录,则返回null。

getAbsolutePath():返回绝对路径。
long lastModified():返回文件最后一次被修改的时间,
long length():返回文件的长度。

public boolean renameTo(File dest):重命名此抽象路径表示的文件

 /*
获取信息:
getName();
getPath();
getParent(); getAbsolutePath();
long lastModofied();
long length(); removeTo(): */
import java.io.*;
public class FileDemo2
{
public static void main(String[] args) throws IOException
{
method_5(); }
public static void method_5()
{
File f1=new File("d:\\abc\\a.txt");
File f2=new File("e:\\hahaha.txt");
sop("rename:"+f1.renameTo(f2)); } public static void method_4()
{
File f=new File("file.txt"); sop("path:"+f.getPath());
sop("abspath:"+f.getAbsolutePath());
//该方法返回的是绝对路径中的父目录
//如果获取的是相对路径,返回null
//如果相对路径中有上一层目录,那么该目录就是返回结果
sop("parent:"+f.getParent()); }
public static void method()throws IOException
{
File f=new File("file.txt");
sop("create:"+f.createNewFile()); }
public static void sop(Object obj)
{
System.out.println(obj); }
}

05 File对象功能-文件列表1

static File[] listRoots():列出可用的文件系统根。
String[] list():返回一个字符串数组,这些字符串指定路径名表示的目录中的文件和目录。

 import java.io.*;
public class FileDemo3
{
public static void main(String[] args)
{ listRootDemo();
listDemo();
}
//列出指定路径下所有的文件
public static void listDemo()
{
File f=new File("d:\\");
//当调用list的对象是一个文件时,会发生空指针异常,因为返回的数组为空
String[] string=f.list();
for(String s:string)
{
System.out.println(s);
}
}
//列出计算机中中所有可用的盘符
public static void listRootDemo()
{
File[] files =File.listRoots();
for(File f:files)
{
System.out.println(f);
}
}
}

06 File对象功能-文件列表2

String list(FilenameFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

其中,FilenameFilter是一个接口,里面只有一个抽象方法accept

 import java.io.*;
public class FileDemo3
{
public static void main(String[] args)
{
listDemo_2();
listDemo_3(); }
public static void listDemo_3()
{
//list()和listFiles()的区别
//list()返回的是字符串数组
//listFiles()返回的是File数组
File dir=new File("c:\\");
File[] files=dir.listFiles();
for(File f:files)
{
System.out.println(f.getName()+"::"+f.length());
}
}
//带参数的list方法,返回满足指定过滤器的文件和目录
public static void listDemo_2()
{
File dir=new File("d:\\abc");
//使用匿名内部类来实现FilenameFilter接口的抽象方法
String[] arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".bmp");
}
});
for(String name:arr)
{
System.out.println(name);
} }
}

07 列出目录下所有内容-递归

列出指定目录下的文件或者文件夹,包含子目录的内容,
也就是列出指定目录下的所有内容。

因为目录中还有目录,只要使用同一个列出目录功能的方法完成即可。
在列出的过程中出现的还是目录的话,就再次调用本方法。
这种编程手法,叫做递归。

 /*

 递归要注意:
1.递归条件
2.递归次数:避免内存溢出
*/
import java.io.*;
public class FileDemo_4
{
public static void main(String[] args)
{
File dir=new File("d:\\");
//showDir(dir);
//求6的二进制
toBin(6);
//求1到100的和
System.out.println("求1到100的和为:"+getSum(100)); }
//递归小例子,十进制变二进制
public static void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
} }
//递归小例子2,求和
//注意,递归次数过多,可能造成内存溢出
public static int getSum(int n)
{
if(n==1)
return 1;
return n+getSum(n-1);
}
//显示目录
public static void showDir(File dir)
{
System.out.println(dir);
File[] files =dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}

08 列出目录下所有内容-带层次

上一小节中中递归显示的目录有点乱,怎么打印出有层次的目录呢?

 //显示出带有层次的目录
import java.io.*;
public class FileDemo_5
{
public static void main(String[] args)
{
File f=new File("D:\\phpnow");
showDir(f,0); }
public static String getLevel(int level)
{
StringBuilder sb=new StringBuilder();
for(int x=0;x<level;x++)
{
sb.append(" ");
}
return sb.toString();
}
public static void showDir(File dir,int level)
{
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x].getName());
}
}
}

09 删除带内容的目录

删除一个带内容的目录

删除原理:
在Windows中,删除目录是从里往外删除的。
既然是从里往外删除,就需要用到递归。

 import java.io.*;
public class RemoveDir
{
public static void main(String[] args)
{
File f=new File("D:\\课堂练习");
removeDir(f); }
public static void removeDir(File dir)
{
File[] files=dir.listFiles();
for(int x=0;x<files.length;x++)
{
if((!files[x].isHidden() )&& files[x].isDirectory())
{removeDir(files[x]);}
else
{System.out.println(files[x].toString()+"--"+files[x].delete());} }
System.out.println(dir+"::"+dir.delete());
}
}

IO流04--毕向东JAVA基础教程视频学习笔记的更多相关文章

  1. 多线程--毕向东java基础教程视频学习笔记

    目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安 ...

  2. IO流01--毕向东JAVA基础教程视频学习笔记

    提要 01 IO流(BufferedWriter)02 IO流(BufferedReader)03 IO流(通过缓冲区复制文本文件)04 IO流(readLine的原理)05 IO流(MyBuffer ...

  3. IO流03--毕向东JAVA基础教程视频学习笔记

    提要 16 读取转换流17 写入转换流18 流操作规律-119 流操作规律-220 改变标准输入输出设备21 异常的日志信息22 系统信息 16 读取转换流 字符流体系中的InputStreamRea ...

  4. 网络编程2--毕向东java基础教程视频学习笔记

    Day 23 08 Udp接收端09 Udp键盘录入数据方式10 Udp聊天11 TCP传输12 TCP传输213 TCP练习14 TCP复制文件 08 Udp接收端 需求:定义一个应用程序,用于接收 ...

  5. IO流05--毕向东JAVA基础教程视频学习笔记

    Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 ...

  6. IO流02--毕向东JAVA基础教程视频学习笔记

    提要 08 自定义装饰类09 LineNumberReader10 MyLineNumberReader11 字节流File读写操作12 拷贝图片13 字节流的缓冲区14 自定义字节流的缓冲区-rea ...

  7. 网络编程3--毕向东java基础教程视频学习笔记

    Day24 01 TCP上传图片02 客户端并发上传图片03 客户端并发登录04 浏览器客户端-自定义服务端05 浏览器客户端-Tomcat服务端 01 TCP上传图片 import java.net ...

  8. 网络编程1--毕向东java基础教程视频学习笔记

    目录: 01 网络编程概述1 02 网络编程概述2 03网络编程 网络模型 04网络编程 IP地址 05网络编程 TCP和UDP 06网络编程 Socket 07网络编程 UDP发送端 01 网络编程 ...

  9. 集合3--毕向东java基础教程视频学习笔记

    Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型 ...

随机推荐

  1. c#单例模式的实现

    单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供. 实现要点: 1.是单例模式的类只提供私有的构造函数.   2.是类定义中含有一个该类的静态私有对象. 3.是该类提供了一个静态的共 ...

  2. C#身份证识别相关技术

    最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍三种身份证识别的方法. 一:调用大公司API接口,百度.云脉,文通科技都有相 ...

  3. Nancy FormsAuthentication使用

    1.新建UserDatabase类,实现IUserMapper接口 using System; using System.Collections.Generic; using System.Linq; ...

  4. csharp: DBNull and DateTime

    /// <summary> /// /// </summary> /// <param name="dateTime"></param&g ...

  5. html5学习笔记4--API Range对象(一)

    Range对象基本用法 效果图如下(在谷歌浏览器下的展示)

  6. MySQL的安装与配置

    首先,到http://www.mysql.com/downloads/下载MySQL的安装文件mysql-installer,双击运行安装. 然后,配置环境变量,右键单击:我的电脑->高级-&g ...

  7. 删除Android包

    Android删除包有很多种方法,其中一种通过Intent删除,代码如下: public boolean unload (String n){ boolean res = true; try{ // ...

  8. sublime text 开发常用插件

    一.emmet插件 (HTML/CSS代码快速编写插件) 安装步骤:打开Sublime菜单栏>首选项>Package Control> 输入>Package Control: ...

  9. java servlet手机app访问接口(三)高德地图云存储及检索

    这篇关于高德地图的随笔内容会多一点, 一.业务说明     对应APP业务中的成员有两类,一是服务人员,二是被服务人员,  主要实现功能, 对APP中的服务人员位置进行时时定位, 然后通过被服务人员登 ...

  10. Guava学习笔记:复写的Object常用方法

    在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法.每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这 ...