Java IO流笔记3

来源:互联网 发布:如何登陆淘宝卖家中心 编辑:程序博客网 时间:2024/05/02 03:05

File

用来将文件或者文件夹封装成对象

方便对文件与文件夹的属性信息进行操作

File对象可以作为参数传递给流的构造函数

static String separator 跨平台的分隔符

 

String filePath = ‘a.txt’;

System.out.println(new File(filePath));   //结果为filePath,无论文件是否存在

 

File类的常见方法

1.创建

在指定位置创建文件,如果该文件已经存在,则不创建,返回false

和输出流不一样,输出流对象一建立则马上创建文件,而且文件存在时会覆盖

boolean createNewFile();   抛出IOException


创建文件夹

boolean mkdir();创建文件夹

boolean mkdirs();创建多级文件夹


2.删除

boolean delete();  删除失败返回false

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


3.判断

boolean exists(); 文件是否存在

对一个文件对象判断是否为文件或者是目录时,必须先判断该文件对象封装的内容是否存在,可通过exsists()判断

boolean isDirectory();  判断是否是一个目录

boolean isFile();  判断是否为一个文件

boolean isHidden();判断是否是隐藏文件

boolean isAbsolute();判断是否为绝对路径


4.获取信息

1)String getName();获得文件名

2)String getParent();  //该方法返回的是绝对路径中父目录,如果封装的是相对路径则返回空

3)String getPath();  和封装的路径有关

4)String getAbsolutePath(); 返回绝对路径

5)long length();获得文件长度

6)long lastModified();获得文件最后一次修改的时间

7)boolean renameTo(File file); 类似于文件移动

8)static File[] listRoots();列出有效盘符

9)String[] list(); 列出指定目录下的所以文件和目录,注意调用list方法的file必须封装了一个目录,且目录必须存在,以字符串数组的形式返回

10)File[] listFiles();列出指定目录下的所以文件和目录,注意调用list方法的file必须封装了一个目录,且目录必须存在,以文件数组的形式返回


练习1:列出目录下所有内容

代码:

public static void main(String[] args) throws IOException {File file = new File("e:/media");if(file.isDirectory()){listFiles(file);}else{System.out.println("该文件不是一个目录");} }static void listFiles(File dir){System.out.println(dir);File[] files = dir.listFiles();for(int i=0; i<files.length; i++){if(files[i].isDirectory()){listFiles(files[i]);}else{System.out.println(files[i]);}}}

运行截图:


如果你希望输出的文件之间带有缩进,可以这样做:

static String getLevel(int level){StringBuilder sb = new StringBuilder();for(int i=0; i<level; i++){sb.append("  ");}sb.append("|--");return sb.toString();}static void listFiles(File dir, int level){System.out.println(getLevel(level)+dir.getName());level++;File[] files = dir.listFiles();for(int i=0; i<files.length; i++){if(files[i].isDirectory()){listFiles(files[i], level);}else{System.out.println(getLevel(level)+files[i].getName());}}

运行截图:


练习2:删除带内容的目录

static void delDir(File dir){File[] files = dir.listFiles();for(int i=0; i<files.length; i++){if(files[i].isDirectory()){delDir(files[i]);}else{files[i].delete();}}dir.delete();}


练习3:创建Java文件列表

public static void main(String[] args) throws IOException {File file = new File("D:\\Program Files\\Eclipse\\demo");if(file.isDirectory()){List<File> fileList = new ArrayList<File>();getJavaFiles(file, fileList);PrintWriter pw = new PrintWriter(new FileWriter("f:/javaFileList.txt"));Iterator<File> iter = fileList.iterator();while(iter.hasNext()){pw.println(iter.next().getPath());}pw.close();}else{System.out.println("该文件不是一个目录");} }static void getJavaFiles(File dir, List<File> fileList){File[] files = dir.listFiles();for(File file: files){if(file.isDirectory()){getJavaFiles(file, fileList);}else{if(file.getName().endsWith(".java")){fileList.add(file);}}}}
运行截图:



Properties

是HashTable的子类

具备map集合的特点,而且它里面存储的键值对都是字符串

是集合和IO技术相结合的集合容器

该对象的特点:可以用于键值对形式的配置文件


常用方法:

1)String getProperty(String key);  得到属性名对应的值

2)Object setProperty(String key, String value);   调用HashTable的put方法,添加元素

3)Set<String> stringPropertyNames();   获得属性名的Set集合

4)void load(InputStream in);  从输入流中加载属性列表

5)void load(Reader r);

6)void store(Writer w, String comments);  将属性列表写入到输出流中

7) void store(OutputStream out, String comments);


0 0
原创粉丝点击