A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-26 14:28 编辑

File类字符流和字节流





路径字符串写法:            1.Windows:        D:\\a\\b\\c                \  需要转义\ \
​                                        2.Linux:                D:/a/b/c
File:                既能表示文件,特能表示目录.
​                构造方法:        File f=new File("D: \develop\a.txt");        只创建File对象,不会创建文件.
​                                        File f=new File("D:\develop", "a.txt");  子父路径拼接,指向a.txt文件.
​                                        File(File parent, String child): 根据指定的父路径File对象和文件路径创建File对象
​                成员方法:        创建        boolean createNewFile;        文件
​                                                        boolean mkdir();                        目录
​                                                        boolean mkdirs();                        多层目录
​                                        删除
​                                                        boolean delete();                        删除文件或目录,回收站没有
​                                                                                                        删除文件夹,这个文件夹必须为空;
​                                        获取
​                                                        File getAbsoluteFile();
​                                                        String getParent();
​                                                        File getParentFile();
​                                                        String getName();                        获取File对象代表的文件名或目录名(不含上层目录)
​                                                        String getPath();                        创建File对象时是相对路径则返回相对路径, 是绝对路径则返回绝对路径
​                                                        long lastModified();                以毫秒值返回最后修改时间;
​                                                        long length();                                返回文件字节数,不可以返回目录字节数;
​                                        修改
​                                                        boolean renameTo(File dest);        修改文件名
​                                        判断
​                                                        boolean exists();                                是否存在
​                                                        boolean isAbsolute();
​                                                        boolean isDirectory();
​                                                        boolean isFile();
​                                                        boolean isHidden();                        是否隐藏
▲重要的获取功能:
▲String[ ]  list()                         获取当前路径下所有文件和目录名称(不包括父路径). File对象必须是目录, 否则会报错
▲File[ ]  listFiles()                         获取当前路径下的所有文件和目录的File对象. File对象必须是目录
▲sttatic File[ ] listRoots()        返回系统的所有根路径. windows系统就是各种盘符        c:
绝对路径:        固定不可改变的路径,以盘符开头;
相对路径:        相对某个参照物,不能以盘符开头
IO流的分类:
外部文件--->内存中--->到文件
按流向分:(相当于java文件)
​        输入流:        读取数据                FileReader        Reader
​        输出流:        写出数据                FilderWriter        Writer
按处理数据分(数据类型):
​        字节流:(处理任何类型文件)
​                字节输入流:InputStream类
​                字节输入流:OutputStream类
​        字符流:(处理文本文件)
​                字符输入流:Reader类
​                字符输出流:Writer类
字符流复制图片:中间有个GBK编码表,有些数字没有相对应的字符,所以会出现偏差.而字节流并没有查询编码表这一中间环节.
字符流复制文本文件的5种方式
  • 基本流, 一次读写一个字符
  • 基本流, 一次读写一个字符数组
  • 缓冲流, 一次读写一个字符
  • 缓冲流, 一次读写一个字符数组
  • 缓冲流, 一次读写一行字符串
    字节流:        InputStream                                   字节输入流的顶层
    ​                FileInputStream                  从文件获取的字节输入流
    ​                BufferedInputStream          带有缓冲区的高效字节输入
    字符流:    Reader                                        字节输入流的顶层
    ​                FileReader                                文件字符输入流
    ​                BufferedReader                        缓冲文件字符输入流
    ​ 一次一个byte
    ​                int by;                while ((by = fis.read()) != -1) {                        fos.write(by);                }
    一次一个byte数组                int len;                byte[] bys = new byte[1024];                while ((len = fis.read(bys)) != -1) {                        fos.write(bys, 0, len);                }
    一次读写一行                String line;                while ((line = br.readline()) != null) {                        bw.write(line);                        bw.newLine();                }




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马