java基础42 File类的构造函数及其方法

本文知识点(目录):

1、IO流(Input Output)
    2、IO流技术的运用场景
    3、File类的构造函数(方法)
    4、File类的一些常用方法
    5、实例(解析File类的常用方法)
    6、附录1(扫描系统上的盘符和指定目录下的所有文件和文件夹)
    7、附录2(在指定目录下,扫描出所有的指定类型的文件)
    8、附录3(扫描电脑中所有的文件和文件夹,及下级目录下的所有文件和文件夹。或扫描指定盘符下的所有文件和文件夹)
    9、附录4(删除磁盘中指定的文件夹里面的所有文件和文件夹)



1、IO流(Input Output)

IO流技术主要的作用是解决设备与设备之间的数据传输问题,比如:硬盘的数据--读取到-->内存中         内存的数据--读取到-->硬盘中          键盘上的数据--读取到-->内存中

2、IO流技术的运用场景

导出报表、上传大头照、下载、解析xml文件.....等等 (数据保存到硬盘,该数据可以做到永久性保存。数据一般以文件的形式保存到硬盘上。sun使用一个File类来描述文件或者文件夹)

3、File类的构造函数(方法)

File(String pathname):指定文件或者文件夹的路径来创建一个File文件
    File(File parent, String child):根据parent抽象路径和child路径名字符串,创建一个新的File实例
    File(String parent, String child):

目录分割符:在Windows机器上的目录分隔符是\,在Linux机器上的目录分隔符是/

注意:在Windows上面\与/都可以作为目录分隔符。而且,如果写/的时候,只需要写1个正斜杠即可,而写\的时候,需要写2个反斜杠。

 package com.dhb.file;

 import java.io.File;
import java.io.IOException; /**
* @author DSHORE / 2018-6-22
*
*/
public class Demo1 {
public static void main(String[] args) throws IOException {
File file = new File("F:/a.txt");//指定路径 [构造函数]
file.createNewFile();//创建文件(空文件) [方法] File files = new File("F:\\","b.txt");//第一个参数是路径,第二个参数是要创建文件的文件名 [构造函数]
files.createNewFile();//创建文件(空文件) [方法]
}
}

4、File类的一些常用方法

创建:
   createNewFile():在指定位置创建空文件,成功返回true,如果已存在就不再创建了返回false
   mkdir():在指定位置创建目录,这之后创建最后一级目录,如果上级目录不存在就抛出异常.
   mkdirs():在指定位置创建目录,这也会创建路径中所有不存在的父目录
   renameTo(File dest):重命名文件或文件夹。文件不同时,相当于文件的剪切,剪切的时候不能操作非空文件夹。移动/重命名成功返回true,失败返回false
  
删除:
   delete() :删除一个文件或者空文件夹,如果文件夹不为空,则不能删除,成返回true,失败返回false
   deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名的文件或者目录,保证文件异常时也可以删除文件
 
判断:
   exists():判断指定的文件或者文件夹是否存在
   isFile():判断是否是一个文件;如果不存在,则为false
   isDirectory():判断是否是一个文件夹
   isHidden():判断指定的文件是否是隐藏文件
   isAbsolute():判断指定的文件或文件夹是否是在绝对路径下
 
获取:
  getName():获取文件或文件夹名称
  getPath():返回的是绝对路径,可以是相对路径,但是目录要指定
  getAbsolutePath():获取绝对路径
  length():获取文件的大小(字节为单位)
  getParent():获取文件的父路径
  lastModified():获取文件最后一次修改的时间
 
  注意:
  . :一个点表示当前路径
  .. :两个点表示上一级路径

路径问题:
       绝对路径:该文件在硬盘上的完整路径;绝对路径一般是以盘符开头的。
       相对路径:资源文件相对于当前程序所在路径。
  注意:如果程序当前所在路径与资源文件不再同一个盘下面,是没法写相对路径的

5、实例

 package com.dhb.file;

 import java.io.File;
import java.io.IOException; /**
* @author DSHORE / 2018-6-22
*
*/
public class Demo2 {
public static void main(String[] args) throws IOException {
//创建
File file=new File("F:\\aa");
System.out.println("创建文件成功了吗?"+file.createNewFile());
File dir=new File("F:\\aaa\\aaa");
System.out.println("创建文件夹成功了吗?"+dir.mkdir());
File dirs=new File("F:\\aaa\\aaa\\aa\\cc\\ddd");
System.out.println("创建多级文件夹成功了吗?"+dirs.mkdirs()); File destFile=new File("F:\\aaaw");
System.out.println("重命名文件夹成功吗?"+dir.renameTo(destFile));
System.out.println("重命名文件成功吗?"+file.renameTo(destFile)); //删除
File deletefile=new File("F:\\aaa");
System.out.println("删除文件/空文件夹成功吗?"+deletefile.delete());
file.deleteOnExit();//jvm
System.out.println("哈哈哈"); //判断
File fil=new File("F:\\a.txt");
file.createNewFile();//创建一个文件
System.out.println("该文件/文件夹存在吗?"+fil.exists());
System.out.println("判断是否是一个文件:"+fil.isFile());
System.out.println("判断是否是一个文件夹:"+fil.isDirectory());
System.out.println("隐藏文件吗?"+fil.isHidden());
System.out.println("是绝对路径吗?"+fil.isAbsolute());
}
}

"获取"的例子

 package com.dhb.file;

 import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date; /**
* @author DSHORE / 2018-6-25
*
*/
public class Demo3 {
public static void main(String[] args) {
/*File file=new File("..\\homeWork.java");
System.out.println(file.exists());*/ File f=new File("..\\..\\a.txt");//上上级路径下的a.txt文件
System.out.println("获取文件名:"+f.getName());//返回值:a.txt
System.out.println("获取相对路径:"+f.getPath());//返回值:..\..\a.txt 说明:a.txt文件在C:\MyEclipse10路径下
/** 当上面两条输出语句的绝对路径下没有a.txt这个文件时,也是输出这个结果,因为他获取的是当前对象f的值*/
System.out.println(f.exists());//返回值:true 说明:C:\MyEclipse10路径下有a.txt文件
System.out.println("获取绝对路径:"+f.getAbsolutePath());//返回值:C:\MyEclipse10\MyCode\MyJavaCode\..\..\a.txt
System.out.println("获取文件的大小(字节为单位):"+f.length());//返回值:10
System.out.println("获取文件的父路径:"+f.getParent());//返回值:..\.. 说明:其父路径为C:\MyEclipse10
long lm=f.lastModified();
Date date=new Date(lm);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println("获取文件最后一次修改的时间:"+sdf.format(date));//返回值:2018年06月25日 11:29:49
}
}

运行结果图

java基础42 File类的构造函数及其方法

附录1

 与文件夹操作相关:
   static File[] listRoots():列出所有的根目录(Windows所有系统盘符)   
   list():返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
   listFiles():返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)

 package com.dhb.file;

 import java.io.File;

 /**
* @author DSHORE / 2018-6-25
*
*/
public class Demo4 {
public static void main(String[] args) {
File[] roots=File.listRoots();
for (File file : roots) {
System.out.println(file);
/* C:\ //运行结果
* D:\
* E:\
* F:\
* G:\
* H:\
* */
} File file=new File("F:\\MyJavaCode");
String[] s=file.list();
for (String string : s) {
System.out.println(string);//返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
} File[] f=file.listFiles();
for (File file2 : f) {
System.out.println(file2.getName());//返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)
}
}
}

运行结果图

java基础42 File类的构造函数及其方法           java基础42 File类的构造函数及其方法后面两条输出语句的结果都一样

附录2

例1:

 package com.dhb.file;

 import java.io.File;

 /**
* @author DSHORE / 2018-6-25
*
*/
/* 需求1:指定一个文件夹,然后返回文件夹下面所有java文件
* */
public class Demo5 {
public static void main(String[] args) {
listJava(new File("F:\\MyJavaCode"));
}
public static void listJava(File dir){
File[] file=dir.listFiles();
for (File file2 : file) {
//方法1
if(file2.getName().endsWith(".java")){
System.out.println(file2.getName());
}
//方法2:正则表达式
String fileName=file2.getName();
if(fileName.matches(".+\\.java")){
System.out.println(fileName);
}
}
}
}

运行结果图

java基础42 File类的构造函数及其方法            java基础42 File类的构造函数及其方法

例2:

 package com.dhb.file;

 import java.io.File;

 /**
* @author DSHORE / 2018-6-26
*
*/
/*
* 需求2:指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是 格式要如下
*
* 文件:
* 文件名1
* 文件名2
* 文件名2
*
* 文件夹:
* 文件夹1
* 文件夹2
* 文件夹3
* */
public class Demo6 { public static void listJava2(File dir){
File[] file=dir.listFiles();
System.out.println("以下是文件:");
for (File file2 : file) {
if(file2.isFile()){//判断其是否是文件
System.out.println(file2.getName());
}
}
System.out.println("以下是文件夹:");
for (File file2 : file) {
if(file2.isDirectory()){//判断其是否是文件夹
System.out.println(file2.getName());
}
}
}
public static void main(String[] args) {
listJava2(new File("F:\\MyJavaCode"));
}
}

运行结果图

java基础42 File类的构造函数及其方法

附录3

 package com.dhb.file;

 import java.io.File;

 /**
* @author DSHORE / 2018-6-26
*
*/
//需求:扫描电脑中所有文件夹和文件以及文件夹下的文件和文件夹,或扫描指定盘符下的所有文件和文件夹等等
public class Demo7 {
public static void listDirtory(String dir){
File f=new File(dir);
File[] f2=f.listFiles();//得到文件和文件夹
if(f2==null){
return;
}else{
for (int i = ; i < f2.length; i++) {
if(f2[i].isDirectory()){//判断是否是 文件夹
System.out.println(f2[i].getAbsolutePath()+" \"is director file\"");//返回值是“文件夹”
listDirtory(f2[i].getAbsolutePath());//继续扫描文件夹里面的文件和文件夹
}else{
System.out.println(f2[i].getAbsolutePath());//返回值是“文件”
}
}
}
}
public static void main(String[] args) {
/*File[] f=File.listRoots();//扫描电脑中所有根盘符
for (File file : f) {
System.out.println(file);
listDirtory(file.toString());//继续扫描文件夹里面的文件和文件夹
}*/
//扫描当前磁盘
listDirtory(File.separator);
//扫描指定磁盘
//listDirtory("F:\\");
}
}

运行结果图(文件和文件夹太多,下面只显示部分)路径的最后一级是文件/文件夹

java基础42 File类的构造函数及其方法

附录4

 package com.dhb.file;

 import java.io.File;

 /**
* @author DSHORE / 2018-7-4
*
*/
//需求:删除磁盘中指定的文件夹里面的所有文件和文件夹
public class Demo12 {
public static void delDir(File dir){
File[] files=dir.listFiles();
if(files != null){
for (int i = ; i < files.length; i++) {
if(files[i].isFile()){
boolean b = files[i].delete();
if(b){
System.out.println(files[i].getAbsolutePath()+"\'文件删除成功\'");
}
}else{
delDir(files[i]);
}
}
}//留下根目录,根目录里面的文件和文件夹全删了
for (int j = ; j < files.length; j++) {
if (files[j].isDirectory()) {
boolean b2 = files[j].delete();
//dir.delete();//删除根目录
if (b2) {
System.out.println(files[j].getAbsolutePath()+"\'目录删除成功\'");
}
}
}
if ("F:\\day".equals(dir.getAbsolutePath())) {
boolean b3 = dir.delete();//删除根目录
if (b3) {
System.out.println(dir.getAbsolutePath()+"\'根目录删除成功\'");
}
}
}
public static void main(String[] args) {
File f=new File("F:\\day");
delDir(f);
}
}

删除前

java基础42 File类的构造函数及其方法      java基础42 File类的构造函数及其方法

删除后(程序运行后)

java基础42 File类的构造函数及其方法        java基础42 File类的构造函数及其方法

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9214032.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
信德语
修纳语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
卢森堡语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
吉尔吉斯语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
夏威夷语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
库尔德语
弗里西语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
普什图语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
科萨
科西嘉语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苏格兰盖尔语
苗语
英语
荷兰语
菲律宾语
萨摩亚语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿姆哈拉语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭
上一篇:Spring读取xml配置文件的原理与实现


下一篇:【剑指offer】面试题44:扑克牌的顺子