黑马程序员 Java基础 IO
来源:互联网 发布:java打印 编辑:程序博客网 时间:2024/05/18 20:08
一 File类
1 概述
IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件
File:文件和目录(文件夹)路径名的抽象表示形式
2 构造函数
A:File file = new File("e:\\demo\\a.txt");
B:File file = new File("e:\\demo","a.txt");
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
C:File file = new File("e:\\demo");
File file2 = new File(file,"a.txt");
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
// 把e:\\demo\\a.txt封装成一个File对象
3 File类的功能(以后用多了就都熟了)
A:创建功能
public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
File file = new File("e:\\demo");System.out.println("mkdir: " + file.mkdir()); File file2 = new File("e:\\demo\\a.txt");System.out.println("creatNewFile: " + file2.creatNewFile()); File file7 = new File("e:\\abc\\abc\\abc");System.out.println("mkdirs: " + file7.mkdirs()); File file8 = new File("e:\\liuyi\\a.txt");System.out.println("mkdirs: " + file8.mkdirs());
B:删除功能
public boolean delete()
File file3 = new File("e:\\buf.txt");System.out.println(file3.delete());File file4 = new File("e:\\abc\\abc");System.out.println(file4.delete());
Java中的删除不走回收站。
要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
C:重命名功能
public boolean renameTo(File dest)
File file = new File("e:\\林青霞.jpg");File newFile = new File("e:\\东方不败.jpg"); System.out.println("renameTo:" + file.renameTo(newFile));
D:判断功能(感觉这个最常用了,递归的时候会用)
* public boolean isDirectory():判断是否是目录
* public boolean isFile():判断是否是文件
* public boolean exists():判断是否存在
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
E:获取功能(也很常用)
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取相对路径
* public String getName():获取名称
* public long length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
F:高级获取功能(很常用)
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
G:过滤器功能
如案例1的第二种方法所示
二 案例
A:输出指定目录下指定后缀名的文件名称
File file = new File("e:\\"); File[] files = file.listFiles(); for(File f: files){if(f.isFile()){if(f.getName().endsWith(".jpg")){System.out.println(f.getName());}}}
很简单的,还有另一种方法,用的是过滤器
* public String[] list(FilenameFilter filter)
* public File[] listFiles(FilenameFilter filter)
public static void main(String[] args) {File file = new File("e:\\"); String[] strArray = file.list(new FilenameFilter(){public boolean accept(File dir, String name){// 到底把这个文件或者文件夹的名称加不加到数组中,取决于这里的返回值是true还是falsereturn new File(dir, name).isFile() && name.endsWith(".jpg");}}); for(String s: strArray){System.out.println(s);}}
B:批量修改文件名称
// E:\评书\三国演义\三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi
// 改后:E:\评书\三国演义\001_桃园三结义.avi
public static void main(String[] args) {File srcFolder = new File("E:\\评书\\三国演义"); File[] fileArray = srcFolder.listFiles(); for (File file : fileArray) {String name = file.getName();int index = name.indexOf("_");String numberString = name.substring(index + 1, index + 4);int endIndex = name.lastIndexOf('_');String nameString = name.substring(endIndex); String newName = numberString.concat(nameString); File newFile = new File(srcFolder, newName); file.renameTo(newFile);}}
C:递归删除带内容的目录(递归)
* 自己之前写的,细节处有点问题,所以还是用了老师的代码
public static void main(String[] args) {File file = new File("e:\\abc"); deleteFolder(file);} public static void deleteFolder(File file){File[] files = file.listFiles();if(files != null){for(File f: files){if(f.isFile()){System.out.println(f.getName() + " " + f.delete());}else{deleteFolder(f);}} System.out.println(file.getName() + " " + file.delete());}}
D:把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台(递归)
public static void main(String[] args) {File file = new File("E:\\java 2015\\2015年Java基础视频_深入浅出精华版(风清扬)\\day20\\code\\day20_DiGui\\src\\cn"); getAllJavaFilePaths(file);} public static void getAllJavaFilePaths(File srcFolder){File[] files = srcFolder.listFiles(); if(files != null){ for(File f: files){if(f.isDirectory()){getAllJavaFilePaths(f);}else{if(f.getName().endsWith("java")){System.out.println(f.getPath());}}}}}
案例C和D都是只要掌握了递归的方式遍历文件,无论要求怎么变,都可以做了
- 黑马程序员--Java基础--IO
- 黑马程序员--------JAVA基础IO
- 【黑马程序员】-----java基础----IO
- 黑马程序员 Java基础 IO
- 黑马程序员-Java基础:IO
- 黑马程序员-java基础 io字符流
- 黑马程序员-java基础 io字节流
- 黑马程序员-java基础 io其他类
- 黑马程序员--JAVA基础之IO流
- 黑马程序员JAVA基础-IO流
- 黑马程序员 Java基础 ---> IO流
- 黑马程序员 JAVA基础<五> IO流
- 黑马程序员-JAVA基础-IO流
- 黑马程序员-java基础-IO学习笔记
- 黑马程序员 java基础回顾---IO流
- <<黑马程序员>>java基础之IO
- 黑马程序员 Java基础----IO流(2)
- 黑马程序员-Java基础-IO总结
- 八种基本排序(1)
- 黑马程序员 Java基础 异常
- 几种图形打印基于C++IO流操作
- json解析出来的数据库是字典和数组的组合,创建一个model来接收解析数据
- Ambari server安装步骤及问题解决
- 黑马程序员 Java基础 IO
- Servlet
- swift -函数、函数指针
- 注意IAR的关键字,这个可以简化程序
- Android异步任务AsyncTask实现方式
- NSBundle的使用
- swift -结构体
- 连接池简介
- 模拟音乐播放器-plist的使用-懒加载-NSBundle全路径的使用