IO流04--毕向东JAVA基础教程视频学习笔记
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基础教程视频学习笔记的更多相关文章
- 多线程--毕向东java基础教程视频学习笔记
目录 1.多线程运行的安全问题 2.多线程同步代码块 3.同步方法的锁是this 4.静态同步方法的锁是Class对象 5.单例设计模式(面试中的考点) 6.死锁(一个发生死锁的例子) 多线程运行的安 ...
- IO流01--毕向东JAVA基础教程视频学习笔记
提要 01 IO流(BufferedWriter)02 IO流(BufferedReader)03 IO流(通过缓冲区复制文本文件)04 IO流(readLine的原理)05 IO流(MyBuffer ...
- IO流03--毕向东JAVA基础教程视频学习笔记
提要 16 读取转换流17 写入转换流18 流操作规律-119 流操作规律-220 改变标准输入输出设备21 异常的日志信息22 系统信息 16 读取转换流 字符流体系中的InputStreamRea ...
- 网络编程2--毕向东java基础教程视频学习笔记
Day 23 08 Udp接收端09 Udp键盘录入数据方式10 Udp聊天11 TCP传输12 TCP传输213 TCP练习14 TCP复制文件 08 Udp接收端 需求:定义一个应用程序,用于接收 ...
- IO流05--毕向东JAVA基础教程视频学习笔记
Day20 10 创建java文件列表11 Properties简述12 Properties存取13 Properties存取配置文件14 Properties练习15 PrintWriter16 ...
- IO流02--毕向东JAVA基础教程视频学习笔记
提要 08 自定义装饰类09 LineNumberReader10 MyLineNumberReader11 字节流File读写操作12 拷贝图片13 字节流的缓冲区14 自定义字节流的缓冲区-rea ...
- 网络编程3--毕向东java基础教程视频学习笔记
Day24 01 TCP上传图片02 客户端并发上传图片03 客户端并发登录04 浏览器客户端-自定义服务端05 浏览器客户端-Tomcat服务端 01 TCP上传图片 import java.net ...
- 网络编程1--毕向东java基础教程视频学习笔记
目录: 01 网络编程概述1 02 网络编程概述2 03网络编程 网络模型 04网络编程 IP地址 05网络编程 TCP和UDP 06网络编程 Socket 07网络编程 UDP发送端 01 网络编程 ...
- 集合3--毕向东java基础教程视频学习笔记
Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型 ...
随机推荐
- SingalR--demo
原文链接 : http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and ...
- Nancy Scripts,CSS文件夹配置
public class Bootstrapper : DefaultNancyBootstrapper { protected override void ConfigureConventions( ...
- Firemonkey 使用 TImage 显示动画图片
参考官网:http://docwiki.embarcadero.com/Libraries/Seattle/en/FMX.Ani.TBitmapListAnimation 延伸阅读:[工具] GIF ...
- 使用HttpDownLoadHelper下载文件
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...
- hdu-1856-More is better
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
- No.016:3Sum Closest
问题: Given an array S of n integers, find three integers in S such that the sum is closest to a given ...
- Java数组排序和查找
Java 1.2 添加了自己的一套实用工具,可用来对数组或列表进行排列和搜索.这些工具都属于两个新类的"静态"方法.这两个类分别是用于排序和搜索数组的Arrays,以及用于排序和搜 ...
- 理解 OpenStack 高可用(HA) (4): Pacemaker 和 OpenStack Resource Agent (RA)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- javascript模板库jsrender for循环嵌套示例
最近在参与整合前端的框架,我们知道javascript最强大的模板引擎之一当属jsrender,号称下一代jquery模板引擎的标准实现. 通常在模板merge的过程中,我们会遇到两次乃至三级嵌套的情 ...
- prototype和__proto__
一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. __p ...