IO流技术
路径拼接:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * * @author 裴新 * */ public class PathDemo01 { /** * \ / 名称分隔符 separator * @param args */ public static void main(String[] args) { String path ="D:\\java300\\IO_study01\\IO.png"; System.out.println(File.separatorChar); //建议 //1、/ path = "D:/java300/IO_study01/IO.png"; System.out.println(path); //2、常量拼接 path ="D:"+File.separator+"java300"+File.separator+"IO_study01"+File.separator+"IO.png"; System.out.println(path); } }
构建File对象:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class FileDemo01 { /** * 构建File对象 * @param args */ public static void main(String[] args) { String path ="D:/java300/IO_study01/IO.png"; //1、构建File对象 File src = new File(path); System.out.println(src.length()); //2、构建File对象 src = new File("D:/java300/IO_study01","IO.png"); src = new File("D:/java300/","IO_study01/IO.png"); System.out.println(src.length()); //3、构建File对象 src = new File(new File("D:/java300/IO_study01"),"IO.png"); System.out.println(src.length()); } }
构建File对象:相对路径与绝对路径
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public class FileDemo02 { /** * 构建File对象 * 相对路径与绝对路径 * 1)、存在盘符: 绝对路径 * 2)、不存在盘符:相对路径 ,当前目录 user.dir * @param args */ public static void main(String[] args) { String path ="D:/java300/IO_study01/IO.png"; //绝对路径 File src = new File(path); System.out.println(src.getAbsolutePath()); //相对路径 System.out.println(System.getProperty("user.dir")); src = new File("IO.png"); System.out.println(src.getAbsolutePath()); //构建一个不存在的文件 src = new File("aaa/IO2.png"); System.out.println(src.getAbsolutePath()); } }
获取File对象名称,路径,绝对路径,父对象,父路径
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/** * 名称或路径 * getName() : 名称 * getPath() : 相对、绝对 getAbsolutePath() :绝对 getParent(): 上路径 返回null * @author 裴新 * */ public class FileDemo03 { public static void main(String[] args) { File src = new File("IO_study01/IO.png"); //基本信息 System.out.println("名称:"+src.getName()); System.out.println("路径:"+src.getPath()); System.out.println("绝对路径:"+src.getAbsolutePath()); System.out.println("父路径:"+src.getParent()); System.out.println("父对象:"+src.getParentFile().getName()); } }
判断文件是否存在,是文件还是文件夹
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 文件状态 * 1、不存在: exists * 2、存在 * 文件: isFile * 文件夹: isDirectory * @author 裴新 * */ public class FileDemo04 { public static void main(String[] args) { File src = new File("IO_study01/IO.png"); System.out.println(src.getAbsolutePath()); System.out.println("是否存在:"+src.exists()); System.out.println("是否文件:"+src.isFile()); System.out.println("是否文件夹:"+src.isDirectory()); src = new File("IO.png"); System.out.println("----------"); System.out.println("是否存在:"+src.exists()); System.out.println("是否文件:"+src.isFile()); System.out.println("是否文件夹:"+src.isDirectory()); src = new File("D:\\java300\\IO_study01"); System.out.println("----------"); System.out.println("是否存在:"+src.exists()); System.out.println("是否文件:"+src.isFile()); System.out.println("是否文件夹:"+src.isDirectory()); //文件状态 src = new File("xxx"); if(null == src || !src.exists()) { System.out.println("文件不存在"); }else { if(src.isFile()) { System.out.println("文件操作"); }else { System.out.println("文件夹操作"); } } } }
获取File对象文件的长度
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 其他信息 * length() : 文件的字节数 * * * @author 裴新 * */ public class FileDemo05 { public static void main(String[] args) { File src = new File("D:/java300/IO_study01/IO.png"); System.out.println("长度:"+ src.length()); src = new File("D:/java300/IO_study01"); System.out.println("长度:"+ src.length()); src = new File("D:/java300/IO_study02"); System.out.println("长度:"+ src.length()); } }
创建文件和删除文件: createNewFile(), delete()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; import java.io.IOException; /** * 其他信息: * createNewFile() : 不存在才创建,存在创建成功 * delete():删除已经存在的文件 * * * @author 裴新 * */ public class FileDemo06 { public static void main(String[] args) throws IOException { File src = new File("D:/java300/IO_study01/io.txt"); boolean flag =src.createNewFile(); System.out.println(flag); flag = src.delete(); System.out.println(flag); System.out.println("----------"); //不是文件夹 flag =src.createNewFile(); System.out.println(flag); flag = src.delete(); System.out.println(flag); //补充: con com3... 操作系统的设备名,不能正确创建 src = new File("D:/java300/IO_study01/con"); src.createNewFile(); } }
创建文件夹:mkdir()和mkdirs()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 创建目录 * 1、mkdir() : 确保上级目录存在,不存在创建失败 * 2、mkdirs(): 上级目录可以不存在,不存在一同来创建 * @author 裴新 * */ public class DirDemo01 { public static void main(String[] args) { File dir = new File("D:/java300/IO_study01/dir/test"); //创建目录 mkdirs() boolean flag = dir.mkdirs(); System.out.println(flag); //创建目录 mkdir() dir = new File("D:/java300/IO_study01/dir/test2"); flag = dir.mkdirs(); System.out.println(flag); } }
列出下一级: 列出下级名称和下级File对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 列出下一级 * 1、list() :列出下级名称 * 2、listFiles():列出下级File对象 * * 列出所有的盘符: listRoots() * @author 裴新 * */ public class DirDemo02 { public static void main(String[] args) { File dir = new File("D:/java300/IO_study01"); //下级名称 list String[] subNames = dir.list(); for(String s:subNames) { System.out.println(s); } //下级对象 listFiles() File[] subFiles = dir.listFiles(); for(File s:subFiles) { System.out.println(s.getAbsolutePath()); } //所有盘符 File[] roots = dir.listRoots(); for(File r:roots) { System.out.println(r.getAbsolutePath()); } } }
递归打印子孙级目录和文件的名称
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 递归: 方法自己调用自己 * 打印子孙级目录和文件的名称 * @author 裴新 * */ public class DirDemo04 { public static void main(String[] args) { File src = new File("D:\\java300\\IO_study01"); printName(src,0); } //打印打印子孙级目录和文件的名称 public static void printName(File src,int deep) { //控制前面层次 for(int i=0;i<deep;i++) { System.out.print("-"); } //打印名称 System.out.println(src.getName()); if(null ==src || !src.exists()) { //递归头 return ; }else if(src.isDirectory()) { //目录 for(File s:src.listFiles()) { printName(s,deep+1); //递归体 } } } }
递归统计文件夹的大小
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 统计文件夹的大小 * @author 裴新 * */ public class DirDemo05 { public static void main(String[] args) { File src = new File("D:\\java300\\IO_study01"); count(src); System.out.println(len); } private static long len =0; public static void count(File src) { //获取大小 if(null!=src && src.exists()) { if(src.isFile()) { //大小 len+=src.length(); }else { //子孙级 for(File s:src.listFiles()) { count(s); } } } } }
递归使用面向对象: 统计文件夹的大小
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.sxt.io; import java.io.File; /** * 使用面向对象: 统计文件夹的大小 * @author 裴新 * */ public class DirCount { //大小 private long len; //文件夹路径 private String path; //文件的个数 private int fileSize; //文件夹的个数 private int dirSize; //源 private File src; public DirCount(String path) { this.path = path; this.src = new File(path); count(this.src); } //统计大小 private void count(File src) { //获取大小 if(null!=src && src.exists()) { if(src.isFile()) { //大小 len+=src.length(); this.fileSize++; }else { //子孙级 this.dirSize++; for(File s:src.listFiles()) { count(s); } } } } public long getLen() { return len; } public int getFileSize() { return fileSize; } public int getDirSize() { return dirSize; } public static void main(String[] args) { DirCount dir = new DirCount("D:\\java300\\IO_study01"); System.out.println(dir.getLen()+"-->"+dir.getFileSize()+"-->"+dir.getDirSize()); DirCount dir2 = new DirCount("D:/java300/IO_study01/src"); System.out.println(dir2.getLen()+"-->"+dir2.getFileSize()+"-->"+dir2.getDirSize()); } }
posted on 2019-08-04 16:15 JieFangZhe 阅读(109) 评论(0) 编辑 收藏 举报