IO流(Input Output) :
IO技术主要的作用是解决设备与设备之间 的数据传输问题。 比如: 硬盘--->内存 内存的数据---->硬盘上 把键盘的数据------->内存中
IO技术的应用场景:
导出报表 , 上传大头照 、 下载 、 解释xml文件 ...
数据保存到硬盘上,该数据就可以做到永久性的保存。 数据一般是以文件的形式保存到硬盘上
sun使用了一个File类描述了文件或者文件夹的。
File类可以描述一个文件或者一个文件夹。
File类的构造方法:
- File(String pathname) 指定文件或者文件夹的路径创建一个File文件。
- File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
- File(String parent, String child)
目录分隔符: 在windows机器上 的目录分隔符是 ,在linux机器上的目录分隔符是/ .
注意: 在windows上面 与 / 都可以使用作为目录分隔符。 而且,如果写/ 的时候只需要写一个即可。
public class Demo1 { public static void main(String[] args) { File file=new File("D:\file.txt"); File parentFile=new File("D:\"); File file2=new File(parentFile,"file.txt"); File file3=new File("D:\","file.txt"); File file4=new File("."); System.out.println("文件是否存在"+file.exists()); System.out.println("文件是否存在"+file2.exists()); System.out.println("文件是否存在"+file3.exists()); System.out.println("当前文件路径"+file4.getAbsolutePath()); } // 搜索d盘文件 public static File text(String child) { File parentFile=new File("D:\"); File file2=new File(parentFile,child); return file2; } }
一、创建
createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs() 在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。
移动/重命名成功则返回true,失败则返回false。
public class Demo2 { public static void main(String[] args) throws IOException { //file创建方法 File file=new File("D:\file.txt");//创建文件名称 System.out.println("创建成功了吗:"+file.createNewFile()); File dir =new File("D:\file");//创建文件夹名称 System.out.println("创建文件成功麻?"+dir.mkdir()); File dirs=new File("D:\file\aa");//创建多级文件夹名称 System.out.println("创建多文件成功麻?"+dirs.mkdirs()); } }
二、删除操作
delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功则成功true不成功false;
* deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删 除
* delete和deleteOnExit区别
* 1.delete是执行后马上删除 ,deleteOnExit是虚拟机终止时才进行删除操作,多用于删除临时文件
public class Demo3 { public static void main(String[] args) { File file=new File("F:\a.txt"); // System.out.println("删除成功麻"+file.delete()); // file.deleteOnExit();//java虚拟机退出的时候删除文件 // 判断方法 File file2=new File("F:\a.txt"); System.out.println("文件是否是一个文件"+file2.exists()); System.out.println("判断是否是一个文件"+file2.isFile()); System.out.println("判断是否是一个文件夹"+file2.isDirectory()); System.out.println("判断是否是一个隐藏的文件"+file2.isHidden()); System.out.println("判断是否是一个绝对路径"+file2.isAbsolute()); } }
应用
//需求1 : 指定一个文件夹,然后该文件夹下面所有java文件。 //需求2: 指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是格式要如下: class MyFilters implements FilenameFilter{ public boolean name() { return false; } @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return name.endsWith(".java"); } } public class Demo5 { public static void main(String[] args) { File dir = new File("D:\BaiduYunDownload\2015年传智播客Java第32期基础+就业班(84天)视频\基础班\day06\day06\代码"); File dir2 = new File("D:\BaiduYunDownload\2015年传智播客Java第32期基础+就业班(84天)视频\基础班\day06"); // listFiles(dir2); listJava2(dir); } public static void listJava2(File dir){ File[] files = dir.listFiles(new MyFilters()); //得到文件夹下面的所有子文件与文件夹。 for(File file : files){ System.out.println(file.getName()); } } public static void listJava(File dir) { File[] files=dir.listFiles();//获取所有子文件 for(File file:files){ String finleName=file.getName(); // if(finleName.endsWith(".java")&&file.isFile()){ // System.out.println(finleName); // } // 正则判断 if(finleName.matches(".+\.java")&&file.isFile()){ System.out.println(finleName); } } } public static void listFiles(File dir) { File[] files= dir.listFiles(); System.out.println("文件"); for(File file:files){ if(file.isFile()){ System.out.println(" "+file.getName()); } } System.out.println("文件夹"); for(File file:files){ if(file.isFile()){ System.out.println(" "+file.getName()); } if(file.isDirectory()){ System.out.println(" "+file.getName()); } } } }