码迷,mamicode.com
首页 > 其他好文 > 详细

02 IO

时间:2020-03-07 21:09:05      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:代号   bsp   width   不用   art   ring   rod   占用   mic   

核心类

技术图片

 

对象想要被传输, 需要通过序列化来将对象编程“序列”.

技术图片

 

字符集对字符流的影响. 字符流底层还是字节流.

技术图片

 

 分隔符

public class IOTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String path = "C:\\JavaWork\\eclipse-workspace\\MyProject01\\src\\smart_production.JPG";
        String path2 = "C:/JavaWork/eclipse-workspace/MyProject01/src/smart_production.JPG";
        String path3 = "C:" + File.separator + "JavaWork" + File.separator + "eclipse-workspace" + File.separator + "MyProject01" +
                File.separator + "src" + File.separator + "smart_production.JPG";
        System.out.println(path);
        System.out.println(path2);
        System.out.println(path3);
    }
    // 建议, path2 和 path3 都没有问题, 主要建议使用 path2 的方式
}

输出结果:

技术图片

 

遍历文件夹文件

// 下级名称 list
        File dir = new File("C:/JavaWork/eclipse-workspace/MyProject01/src");
        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 src = new File("C:/JavaWork/eclipse-workspace/MyProject01/src");
        printName(src, 0);

    }
        // 用递归, 非常占用内存
        public static void printName(File src, int deep) {
            System.out.println(src.getName() + " " + deep);
            if (null == src || !src.exists()) {
                return;
            } else if (src.isDirectory()) {
                for (File s:src.listFiles()) {
                    printName(s, deep+1);
                }
            }
        }

字符集 & 乱码

编码: 由字符 -> 字节(2进制), encode

解码: 有字节 -> 字符(人能读懂), decode (计算机只认识 0低电平,1高电平 等字节)

"a" 有个代号整数比如64,然后转换成 2进制数, 就编码了(转换成字节码了).  所以这个代号的集合就是字符集. 同样 "中"这个字也是可以利用字符集来编码.

// 编码: 字节数组
        byte[] datas = msg.getBytes();    // 默认使用工程的字符集
        System.out.println(datas.length);
        // 解码: 字符串 
        msg = new String(datas, 0, datas.length, "UTF-8");

解码的过程中可能产生乱码: 因为长度不够, 比如 datas.length-2, 或者是字符集跟之前不匹配.

字节流: 处理视频, 音频, word, excel 等

字符流: 比如处理纯文本, 也就是说文件本身就是字符的, 那么,我们不用编码成字节了, 可以直接处理.

 

02 IO

标签:代号   bsp   width   不用   art   ring   rod   占用   mic   

原文地址:https://www.cnblogs.com/moveofgod/p/12436718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!