一、File类概述

用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数

二、File类常见方法:

1,创建

boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返false,  和输出流不一样,

输出流对象一建立创建文件,而且文件已经存在,会覆盖。

boolean mkdir():创建文件夹。

boolean mkdirs():创建多级文件夹。

2,删除

boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。

void deleteOnExit();在程序退出时删除指定文件。

3,判断

boolean exists() :文件是否存在.记住在判断文件对象是否是文件或者路径时,

必须要先判断该文件对象封装的内容是否存在。

isFile(): isDirectory();isHidden();isAbsolute();

4,获取信息

getName():  getPath():     getAbsolutePath()   long lastModified()   long length()

getParent():该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。七

File常见方法演示代码

package cn.xushuai.io;
import java.io.*;class FileDemo {public static void main(String[] args) throws IOException{method_1();//method_5();}public static void method_1()throws IOException{File f = new File("file.txt");
//      sop("create:"+f.createNewFile());//创建文件,如果已存在,则不再创建//sop("delete:"+f.delete()); //删除文件}public static void method_2(){File f = new File("file.txt");//sop("exists:"+f.exists());//sop("execute:"+f.canExecute());//创建多级文件夹File dir = new File("abc\\kkk\\a\\a\\dd\\ee\\qq\\aaa");sop("mkdir:"+dir.mkdirs());}public static void method_3()throws IOException{File f = new File("d:\\java1223\\day20\\file2.txt");//f.createNewFile();//f.mkdir();//记住在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在。//通过exists判断。sop("dir:"+f.isDirectory());sop("file:"+f.isFile());sop(f.isAbsolute());//文件不存在。也可以}public static void method_4(){File f = new File("file.txt");sop("path:"+f.getPath());//返回所封装的路劲sop("abspath:"+f.getAbsolutePath()); //获取绝对路径,即使是相对的路径也可以sop("parent:"+f.getParent());//该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。//如果相对路径中有上一层目录,那么该目录就是返回结果。}public static void method_5(){File f1 = new File("c:\\Test.java");File f2 = new File("d:\\hahah.java");sop("rename:"+f2.renameTo(f1));//重新命名此抽象路径名表示的文件}public static void sop(Object obj){System.out.println(obj);}
}

File练习


练习一:获取文件列表:

package cn.xushuai.io;import java.io.File;
import java.io.FilenameFilter;
import java.util.Iterator;public class FileDemo2 {public static void main(String[] args) {// TODO Auto-generated method stub//listRootsDemo();listFileDemo();//listDemo();//listFilterDemo();}//列出可用的文件系统根public static void listRootsDemo(){File[] files = File.listRoots();  for (File file : files) {System.out.print(file);}}//返回一个文件对象数组public static void listFileDemo(){File file = new File("D:\\Java\\java课程\\毕向东\\Java基础\\day20");File[]  files = file.listFiles();for(File f : files){System.out.println(f+"...."+f.getName()+"....."+f.length());}}public static void listDemo(){File file = new File("D:\\Java\\java课程\\毕向东\\Java基础\\day20");
//返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录String[] names = file.list();  //调用list方法的file对象必须是封装了一个目录。该目录还必须存在for(String name: names){System.out.println(name);}}//获取指定文件类型的文件public static void listFilterDemo(){File dir = new File("D:\\Java\\java课程\\毕向东\\Java基础\\Java基础源代码\\day14");String[] names = dir.list(new FilenameFilter(){      public boolean accept(File dir,String name){    //System.out.println("dir:"+dir+"....name::"+name);/*if(name.endsWith(".java"))return true;elsereturn false;*/return name.endsWith(".java");}});for(String name : names){System.out.println(name);}}
}

练习二:列出指定目录下文件或者文件夹,包含子目录中的内容

示例说明:

因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。

在列出过程中出现的还是目录的话,还可以再次调用本功能。

也就是函数自身调用自身。

这种表现形式,或者编程手法,称为递归。

递归注意事项:

1,限定条件

2,要注意递归的次数。尽量避免内存溢出。

由于在没有符合限定条件时,每次调用都会开辟一个新的内存空间由于存放方法,

但是这些内存都不能释放。只有符合限定条件,才能一步步往回执行,占用大量内存

package cn.xushuai.io;
import java.io.File;public class FileDemo3 {public static void main(String[] args) {// TODO Auto-generated method stubFile file = new File("D:\\Java\\java课程\\毕向东\\Java基础\\Java基础源代码");//showDir(file);System.out.println(getSum(10));       showDir(file,0);}//通过递归列出某个文件夹下的所有内容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);elseSystem.out.println(getLevel(level)+files[x].getName()+"....");}}//在列表前添加级数public static String getLevel(int level){StringBuilder sb = new StringBuilder();sb.append("|--");for(int i=0;i<level;i++){sb.insert(0,"| ");}return sb.toString();}


练习三:将一个指定路径下的文件列表写入到一个本地文件中

这里将指定路径下的所有文件对象先存储到集合中去,然后将集合中的对象写入到本地文件:对象的持久化

存入集合是为了可以有更多的操作选择,打印,写入都可。

思路:

1,对指定的目录进行递归。

2,获取递归过程所以的java文件的路径。

3,将这些路径存储到集合中。

4,将集合中的数据写入到一个文件中。

package cn.xushuai.io;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class JavaFileList {public static void main(String[] args) {List<File> list = new ArrayList<File>();  File file = new File("D:\\Java\\java课程\\毕向东\\Java基础\\Java基础源代码\\day20"); File file2 = new File("c:\\javalist2.txt");      list = file2List(list,file);try {write2File(list,file2.toString());} catch (IOException e) {System.out.println("写入失败!");}}//将文件内容存入集合public static List file2List(List list,File dir){    File[] files = dir.listFiles();for(int x=0;x<files.length;x++){if(files[x].isDirectory())file2List(list,files[x]);else{if(files[x].getName().endsWith(".java"))list.add(files[x]);}}return list;}//将集合中的内容存入文件public static void write2File(List<File> list,String fileName)throws IOException{BufferedWriter bufr = null;try {bufr = new BufferedWriter(new FileWriter(fileName));for(File f : list){ String path = f.getAbsolutePath();bufr.write(path);//bufr.write(f.toString());bufr.newLine();bufr.flush();}} catch (IOException e) {throw e;}finally{if(bufr!=null)try {bufr.close();} catch (IOException e) {throw e;}}  }
}

练习四、删除带内容的目录


删除原理:

在window中,删除目录从里面往外删除的

既然是从里往外删除。就需要用到递归

import java.io.*;
class  RemoveDir{public static void main(String[] args) {File dir = new File("d:\\testdir");removeDir(dir);}public static void removeDir(File dir){File[] files = dir.listFiles();for(int x=0; x<files.length; x++){if(files[x].isDirectory())removeDir(files[x]);elseSystem.out.println(files[x].toString()+":-file-:"+files[x].delete());}System.out.println(dir+"::dir::"+dir.delete());}
}

转载于:https://www.cnblogs.com/xushuai123/archive/2012/11/21/3634433.html

java基础--IO流之File类相关推荐

  1. 黑马程序员——Java基础--IO流(一)---File类以及其他流对象

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.File类 File类是将文件系统中的文件和文件夹封装成了对象.提供了更多的属性和行为可以对 ...

  2. Java的IO流之File类

    java的IO流模块常用的工具有File.字节流.字符流.特殊操作流,本篇文章便是本人学习File类的一次学习记录. 一.File类概述 File:是文件和目录路径名的抽象表示 ① 文件和目录是可以通 ...

  3. java的io流的file类_java IO流 (一) File类的使用

    1.File类的理解 * 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) * 2. File类声明在java.io包下 * 3. File类中涉及到关于文件或文件目录的创建.删 ...

  4. java中io流如何创建一个文件_,Java中Io流操作-File类的常用操作-创建文件,创建文件夹...

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  5. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  6. # Java基础——IO流

    Java基础--IO流 File类的使用(熟悉构造器和方法的使用) File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类的声明在java.io包下 文件和文件目录路径的抽象表示 ...

  7. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  8. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  9. Java基础IO流之字符流的使用

    ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤.IO流分为字节流和字符流,而上一篇文章我们学习了字节流(Java基础IO流之字符流的使用),这篇文章带大家一起来学习字符流吧.对文章中描述错误的希望大家积 ...

最新文章

  1. 在CentOS 6.3 64bit上使用 smartmontools和MageCli 监测硬盘的健康状态
  2. web页面的点对点复制粘贴
  3. Mybatis中的模糊查询
  4. 阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型...
  5. [YTU]_2911 ( 我想放假)
  6. Mysql8 group replication组复制集群单主多主模式切换
  7. WebDriver介绍
  8. Dubbo + RestEasy 实现文件上传与下载
  9. 【ACM】nyoj_103_A+BII_201307291022
  10. Tableau上面地图与条形图结合_Tableau | 20种常用图表(上文)
  11. PCA算法原理及实现
  12. 魔方机器人设计中的问题
  13. MCGS组态屏CRC16(Modbus)校验计算脚本
  14. 12306排队是什么意思_12306抢票显示排队中怎么办
  15. 程序员与黑客的故事 程序员应有的工作素质
  16. 九爷带你了解 mctop: 监视 Memcache 流量
  17. Javascript Yielding Processes 定时器数组分块技术
  18. android 上传nexus_上传 Android aar 到 nexus 上
  19. icon和文本垂直居中对齐
  20. php实现手机归属地的查询、,PHP实现查询手机归属地的方法详解

热门文章

  1. Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】
  2. [Linux] linux服务器主机性能、空间监控脚本
  3. 无需深厚技术背景,也可以做好系统和应用维护管理
  4. onnx 测试_pytorch onnx onnxruntime tensorrt踩坑 各种问题
  5. esp8266时钟_ESP8266(Non-OS SDK) 驱动 waveshare 2.9 寸墨水屏(二)- 程序移植、修改与测试
  6. MQTT基本应用(Mosquitto+Eclipse Paho)
  7. 小程序绘制之CanvasContext
  8. web系统管理系统_使用无头管理系统创建灵活的Web内容
  9. 关联映射 一对多 实验心得_使用影响映射来帮助您的团队进行实验
  10. Java是有法_Java基础语法