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 }

 

posted @ 2019-07-14 22:42  codeFlyer  阅读(297)  评论(0)    收藏  举报