本帖最后由 小石姐姐 于 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(); }
|