(七)、Java复习笔记之 I/O 流(1)
来源:互联网 发布:2016mac flash安装不了 编辑:程序博客网 时间:2024/06/05 05:44
I/O流体系图:
79、File类
- 概述
- 文件和目录路径名的抽象表示形式
- File更应该叫做一个路径
- 文件路径或者文件夹路径
- 路径分为绝对路径和相对路径
- 绝对路径是一个固定的路径,从盘符开始
- 相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下指的是当前路径
构造方法
- File(String pathname):根据一个路径得到File对象
- File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File file = new File("F:\\Java笔记\\video\\今日内容.avi"); //第一个\是转义String parent = "F:\\Java笔记\\video";String child = "今日内容.avi";File file = new File(parent,child);File parent = new File("F:\\Java笔记\\video");String child = "今日内容.avi";File file = new File(parent, child);
80、File类的创建功能
创建功能
- public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
- public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来(级联创建)
File file = new File("yyy.txt");file.createNewFile();File dir1 = new File("aaa");dir1.mkdir()File dir3 = new File("ccc\\ddd");dir3.mkdirs()
- 注意事项:
- 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
81、File类的重命名和删除功能
- 重命名和删除功能
- public boolean renameTo(File dest):把文件重命名为指定的文件路径
- public boolean delete():删除文件或者文件夹
- 重命名注意事项
- 如果路径名相同,就是改名。
- 如果路径名不同,就是改名并剪切。
删除注意事项:
- Java中的删除不走回收站。
要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
File file1 = new File("ooo.txt");File file2 = new File("D:\\xxx.txt");System.out.println(file1.renameTo(file2));File file1 = new File("yyy.txt");System.out.println(file1.delete());
82、File类的判断功能
- 判断功能
- public boolean isDirectory():判断是否是目录
- public boolean isFile():判断是否是文件
- public boolean exists():判断是否存在
- public boolean canRead():判断是否可读
- public boolean canWrite():判断是否可写
- public boolean isHidden():判断是否隐藏
实例
File file = new File("zzz");file.setReadable(false);System.out.println(file.canRead()); //true,windows系统认为所有的文件都是可读的file.setWritable(false);System.out.println(file.canWrite()); //false,windows系统可以设置为不可写
83、File类的获取功能
- 获取功能
- public String getAbsolutePath():获取绝对路径
- public String getPath():获取路径(获取构造方法中传入路径)
- public String getName():获取名称
- public long length():获取长度。字节数
- public long lastModified():获取最后一次的修改时间,毫秒值
- public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
- public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
实例:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
File dir = new File("E:\\");String[] arr = dir.list(); //获取e盘下所有的文件或文件夹for (String string : arr) { if(string.endsWith(".jpg")) { System.out.println(string); }}// 或者File[] subFiles = dir.listFiles(); //获取e盘下所有的文件或文件夹对象for (File subFile : subFiles) { if(subFile.isFile() && subFile.getName().endsWith(".jpg")) { System.out.println(subFile); }}
84、文件名称过滤器
- 概述
- public String[] list(FilenameFilter filter):获取满足指定过滤器的文件和目录。
- public File[] listFiles(FileFilter filter)
实例:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
File dir = new File("E:\\");String[] arr = dir.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { //System.out.println(dir); //E:\ //System.out.println(name); //E盘里的文件名或文件夹名 File file = new File(dir, name); return file.isFile() && file.getName().endsWith(".jpg"); }});for (String str : arr) { System.out.println(str);}
85、File实例
从键盘接收一个文件夹路径,统计该文件夹大小
public static void main(String[] args) { //File dir = new File("F:\\day06"); //System.out.println(dir.length()); //直接获取文件夹的结果是0 File dir = getDir(); System.out.println(getFileLength(dir));}//从键盘接收一个文件夹路径public static File getDir() { //1,创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径:"); //2,定义一个无限循环 while(true) { //3,将键盘录入的结果存储并封装成File对象 String line = sc.nextLine(); File dir = new File(line); //4,对File对象判断 if(!dir.exists()) { System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:"); }else if(dir.isFile()) { System.out.println("您录入的是文件路径,请输入一个文件夹路径:"); }else { //5,将文件夹路径对象返回 return dir; } }}//统计该文件夹大小public static long getFileLength(File dir) { //1,定义一个求和变量 long len = 0; //2,获取该文件夹下所有的文件和文件夹listFiles(); File[] subFiles = dir.listFiles(); //3,遍历数组 for (File subFile : subFiles) { //4,判断是文件就计算大小并累加 if(subFile.isFile()) { len = len + subFile.length(); //5,判断是文件夹,递归调用 }else { len = len + getFileLength(subFile); } } return len;}
从键盘接收一个文件夹路径,删除该文件夹
public static void main(String[] args) { File dir = Test1.getDir(); //获取文件夹路径 deleteFile(dir);}//从键盘接收一个文件夹路径public static File getDir() { //1,创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径:"); //2,定义一个无限循环 while(true) { //3,将键盘录入的结果存储并封装成File对象 String line = sc.nextLine(); File dir = new File(line); //4,对File对象判断 if(!dir.exists()) { System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:"); }else if(dir.isFile()) { System.out.println("您录入的是文件路径,请输入一个文件夹路径:"); }else { //5,将文件夹路径对象返回 return dir; } }}//删除该文件夹public static void deleteFile(File dir) { //1,获取该文件夹下的所有的文件和文件夹 File[] subFiles = dir.listFiles(); //2,遍历数组 for (File subFile : subFiles) { //3,判断是文件直接删除 if(subFile.isFile()) { subFile.delete(); //4,如果是文件夹,递归调用 }else { deleteFile(subFile); } } //5,循环结束后,把空文件夹删掉 dir.delete();}
从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
public static void main(String[] args) throws IOException { File src = Test1.getDir(); File dest = Test1.getDir(); if(src.equals(dest)) { System.out.println("目标文件夹是源文件夹的子文件夹"); }else { copy(src,dest); }}//从键盘接收一个文件夹路径public static File getDir() { //1,创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径:"); //2,定义一个无限循环 while(true) { //3,将键盘录入的结果存储并封装成File对象 String line = sc.nextLine(); File dir = new File(line); //4,对File对象判断 if(!dir.exists()) { System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:"); }else if(dir.isFile()) { System.out.println("您录入的是文件路径,请输入一个文件夹路径:"); }else { //5,将文件夹路径对象返回 return dir; } }}//把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 public static void copy(File src, File dest) throws IOException { //1,在目标文件夹中创建原文件夹 File newDir = new File(dest, src.getName()); newDir.mkdir(); //2,获取原文件夹中所有的文件和文件夹,存储在File数组中 File[] subFiles = src.listFiles(); //3,遍历数组 for (File subFile : subFiles) { //4,如果是文件就用io流读写 if(subFile.isFile()) { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName()))); int b; while((b = bis.read()) != -1) { bos.write(b); } bis.close(); bos.close(); //5,如果是文件夹就递归调用 }else { copy(subFile,newDir); } }}
从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
*public static void main(String[] args) { File dir = Test1.getDir(); //获取文件夹路径 printLev(dir,0);}//从键盘接收一个文件夹路径public static File getDir() { //1,创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个文件夹路径:"); //2,定义一个无限循环 while(true) { //3,将键盘录入的结果存储并封装成File对象 String line = sc.nextLine(); File dir = new File(line); //4,对File对象判断 if(!dir.exists()) { System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径:"); }else if(dir.isFile()) { System.out.println("您录入的是文件路径,请输入一个文件夹路径:"); }else { //5,将文件夹路径对象返回 return dir; } }}//把文件夹中的所有文件以及文件夹的名字按层级打印public static void printLev(File dir,int lev) { File[] subFiles = dir.listFiles(); //1,遍历数组 for (File subFile : subFiles) { for(int i = 0; i <= lev; i++) { System.out.print("\t"); } //2,无论是文件还是文件夹,都需要直接打印 System.out.println(subFile); //3,如果是文件夹,递归调用 if(subFile.isDirectory()) { //printLev(subFile,lev + 1); printLev(subFile,++lev); } }}
阅读全文
0 0
- (七)、Java复习笔记之 I/O 流(1)
- (八)、Java复习笔记之 I/O 流(2)
- (九)、Java复习笔记之 I/O 流(3)
- java复习之I/O流
- java总结(之七)--Java I/O系统
- C#学习笔记之七(network I/O, Asynchonouse network I/O)
- Java复习(5)-I/O
- Java知识复习(I/O)
- 学习笔记I/O篇之七
- 复习java: I/O
- GNU/Linux编程指南学习笔记之七:系统编程----I/O Routines (续)
- Java中的I/O流复习
- Python学习笔记(七):Python 文件I/O
- Nginx源代码分析之I/O模型细节(七)
- java复习(七)
- Java I/O流复习(一)—File类、字节流、字节缓冲流
- Java复习笔记[6] —— 文件I/O
- java I/O流(1)编码
- 机器学习基石-Types of Learning
- 入门训练 序列求和
- ZooKeeper 简单介绍
- sdnu1166.不高兴的津津
- 8670 PSUH函数翻译
- (七)、Java复习笔记之 I/O 流(1)
- 安卓开发之多渠道打包并获取渠道名称
- Java数据库连接池commons-dbcp升级到commons-dbcp2
- liunx centos7安装jdk1.8(yum)
- Tornado 文档学习:运行与部署
- findViewById类型转换异常Casting
- 九章算法 第二节 二分查找 Binary Search
- OpenWrt:自动挂载sd卡
- C语言-模拟实现strcpy