1、IO流(Input Output)
IO流技术主要的作用是解决设备与设备之间的数据传输问题,比如:硬盘的数据--读取到-->内存中 内存的数据--读取到-->硬盘中 键盘上的数据--读取到-->内存中
2、IO流技术的运用场景
导出报表、上传大头照、下载、解析xml文件.....等等 (数据保存到硬盘,该数据可以做到永久性保存。数据一般以文件的形式保存到硬盘上。sun使用一个File类来描述文件或者文件夹)
3、File类的构造函数(方法)
目录分割符:在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类的一些常用方法
创建:
删除:
判断:
获取:
注意:
路径问题:
注意:如果程序当前所在路径与资源文件不再同一个盘下面,是没法写相对路径的
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 } }
运行结果图
附录1
与文件夹操作相关:
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());//返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作) } } }
运行结果图
后面两条输出语句的结果都一样
附录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); } } } }
运行结果图
例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")); } }
运行结果图
附录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 = 0; i
运行结果图(文件和文件夹太多,下面只显示部分)路径的最后一级是文件/文件夹
附录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 = 0; i
删除前
删除后(程序运行后)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。