为了账号安全,请及时绑定邮箱和手机立即绑定

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • gbk编码中汉字占2个字节

    utf-8编码中汉字占3个字节

    查看全部
    0 采集 收起 来源:文件的编码

    2018-04-24

  • 右击项目 -> 查看properties 查看项目默认编码方式

    查看全部
    0 采集 收起 来源:文件的编码

    2018-04-24

  • VVe

    FileReader/FileWriter  跟InputStreamReader/OutputStreamWriter有点像

    共同点:

    都是以char为单位实现

    底层都是字节单位实现

    不同点:

    优:比InputStreamReader/OutputStreamWriter简单一点

    缺:不能指定编码格式读取

    代码解析:

    //批处理(单字符处理没写)

    FileReader fr = new FileReader("F:\\java\\demo\\FrAndFw1.txt");

    FileWriter fw = new FileWriter("F:\\java\\demo\\FrAndFw2.txt");//简便在这里,但是无法指定编码格式

    char[] c1 = new char[8 * 1024];

    int c;

    while ((c = fr.read(c1, 0, c1.length)) != -1) {

    fw.write(c1, 0, c);

    fw.flush();

    }

    fr.close();

    fw.close();


    查看全部
  • VVe

    2.字符流

    1)编码问题

    2)文本和文本文件

    java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)

    文件:byte byte byte..一个字节一个字节的数据序列

    文本文件:按照某种编码格式(utf-8,utf-16be,gbk),几个byte几个byte存的存储结构

    3)字符流(reader writer)---->操作的大部分都是文本文件

    一次处理一个字符

    底层仍然是基本的字节序列,一个字节一个字节的处理

    字符流的基本实现:

    InputStreamReader   把读取的byte按照编码格式转化为char

    OutputSreamWriter   把读取的Char转化为byte写入

    代码解析:

    FileInputStream fis= new FileInputStream("F:\\java\\demo\\utf-8-1.txt");

    FileOutputStream fos= new FileOutputStream("F:\\java\\demo\\utf-8-2.txt");

    // 如果没有特别指明,默认使用的编码格式是项目默认的编码格式

    //new InputStreamReader(fis,"gbk");默认编码格式 ,与项目的编码格式相同

    //"gbk"一般不显示出来,是默认的,如果读取的文本编码格式不一样,就要用相应的编码格式读取

    InputStreamReader isr = new InputStreamReader(fis,"utf-8");

    OutputStreamWriter osw=new OutputStreamWriter(fos,"utf-8");

    //单char处理:

    //int c;

    // while((c=isr.read())!=-1) {

    // System.out.print((char)c);

    // }

    // 批量处理,读取0到c2.length长度的数据放入到c2中,c用来接收放入了多少个数据

    int c;

    char[] c2 = new char[8 * 1024];

    while ((c = isr.read(c2, 0, c2.length)) != -1) {

    String c3 = new String(c2, 0, c);//

    System.out.print(c3);

    osw.write(c2, 0, c);

    osw.flush();

    }

    isr.close();


    查看全部
  • https://img1.sycdn.imooc.com//5ad9cfd500011a7e08110439.jpg

    查看全部
  • .ListFiles();
    返回子文件目录的数组


    查看全部
    0 采集 收起 来源:遍历目录

    2018-04-19

  • read(buf, 0, buf.length)

    查看全部

  • 最外层if加个else 空目录也能打印出来

    package com.imooc.io;


    import java.io.File;

    import java.io.IOException;


    public class FileUtils {

    //列出File的一些常用操作,比如过滤、遍历等操作

    public static void listDirectory(File dir)throws IOException {

    if(!dir.exists()) {

    throw new IllegalArgumentException("目录:" + dir + "不存在");

    }

    if(!dir.isDirectory()) {

    throw new IllegalArgumentException(dir + "不是目录");

    }

    // String[] filenames = dir.list();//返回的是字符串数组,直接子目录名称,不包含子目录下的内容

    // for(String string : filenames) {

    // System.out.println(string);

    // }

    //如果要遍历子目录下的类容,就需要构造成File对象进行递归操作

    //File提供了直接返回File对象的API

    File[] files = dir.listFiles();//返回的是直接子目录的(文件 )的抽象

    if(files != null && files.length > 0)

    for (File file : files) {

    if(file.isDirectory()){

    //递归

    listDirectory(file);

    }else {

    System.out.println(file);

    }

    }

    else

    System.out.println(dir);

    }


    }


    查看全部
    0 采集 收起 来源:遍历目录

    2018-04-15

  • 4

    查看全部
  • 3

    查看全部
  • 2

    查看全部
  • 1

    查看全部
  • 4

    查看全部
  • 3

    查看全部
  • 2

    查看全部

举报

0/150
提交
取消
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!