IO流---文件夹遍历,文件编码解码
File对象的创建,获得文件目录或名称,文件状态,新建,删除文件等操作:
1 package cn.ftf.io; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 public class TestIO01 { 7 public static void main(String[] args) throws Exception { 8 String path="D:\\myjavacode\\JavaPractise01\\src\\cn\\ftf\\io\\盲打指示.jpg"; 9 System.out.println(File.separatorChar); //该平台的分隔符,查api文档可以看到 10 //一般写路径一般这样写:方便跨平台 11 path="D:/myjavacode/JavaPractise01/src/cn/ftf/io/盲打指示.jpg"; 12 //或者拼接的方法 13 14 //构建File对象。查阅api文档,有三种方法 15 File src = new File(path); 16 System.out.println(src.length()); //文件大小,字节数,long类型 17 src=new File("D:/myjavacode/JavaPractise01/src/cn/ftf/io","盲打指示.jpg"); 18 src=new File(new File("D:/myjavacode/JavaPractise01/src/cn/ftf/io"),"盲打指示.jpg"); 19 20 System.out.println(src.getAbsolutePath()); //获得绝对路径 21 22 /** 23 * 名称或路径 24 */ 25 System.out.println(src.getName()+"hello"); 26 System.out.println(src.getPath()); //给相对路径,出相对路径,给绝对路径,出绝对路径 27 System.out.println(src.getParent()); //返回父路经 28 System.out.println("返回父对象"+src.getParentFile().getName()); //可以返回父对象 29 30 /** 31 * 文件状态 32 */ 33 System.out.println(src.exists()); 34 System.out.println(src.isFile()); 35 System.out.println(src.isDirectory()); 36 37 /** 38 * 创建新文件,删除文件 39 */ 40 File src01=new File("D:/myjavacode/JavaPractise01/src/cn/ftf/io/测试新建.txt"); //不存在才创建,不能创建文件夹 41 src01.createNewFile(); 42 src01.delete(); 43 } 44 45 }
创建新文件夹,列出下级文件:
1 package cn.ftf.io; 2 3 import java.io.File; 4 5 public class TestIO02 { 6 public static void main(String[] args) { 7 String path="D:/myjavacode/JavaPractise01/src/测试新建"; 8 File dir = new File(path); 9 10 //创建目录 mkdir()确保上级目录存在,mkdirs()上级目录一起创建,一般使用mkdirs() 11 dir.mkdirs(); 12 13 //列出下级名称 list 14 path="D:/myjavacode/JavaPractise01/src"; 15 dir = new File(path); 16 String[] subNames=dir.list(); 17 for(String s:subNames) { 18 System.out.println(s); 19 } 20 21 //列出下级对象 22 File[] subFiles=dir.listFiles(); 23 for(File s:subFiles) { 24 System.out.println(s.getAbsolutePath()); 25 } 26 27 //所有盘符 28 File[] roots=dir.listRoots(); 29 for(File r:roots) { 30 System.out.println(r.getAbsolutePath()); 31 } 32 33 } 34 35 }
遍历文件夹,获得文件夹大小:
1 package cn.ftf.io; 2 3 import java.io.File; 4 5 /** 6 * 打印子孙目录和名称 7 * @author 房廷飞 8 * 9 */ 10 public class TestIO03 { 11 private static long a=0; 12 public static void main(String[] args) { 13 String path; 14 path="D:/myjavacode/JavaPractise01/src"; 15 File file=new File(path); 16 printName(file); 17 System.out.println(a); 18 } 19 public static void printName(File file) { 20 if(file.exists()) { 21 if(file.isDirectory()) { 22 File[] dir=file.listFiles(); 23 for(File f:dir) { 24 System.out.println(f.getAbsolutePath()); 25 printName(f); 26 } 27 }else { 28 long b=file.length(); 29 a+=b; 30 } 31 } 32 33 } 34 35 }
文件的编码和解码
1 package cn.ftf.io; 2 3 import java.io.UnsupportedEncodingException; 4 5 public class TestIO04 { 6 public static void main(String[] args) throws UnsupportedEncodingException { 7 String msg="hello,明天!"; 8 //编码,字节数组 9 byte[] datas=msg.getBytes(); //默认使用工程字符集,是GBK,英文一个字节。中文两个字节 10 System.out.println(datas.length); 11 12 //解码,对应编码 13 String str=new String(datas,0,datas.length,"gbk"); //查阅api文档(字节数组,开始位置,字节数组长度,编码方式) 14 System.out.println(str); 15 } 16 17 }