java IO 学习(三)
java IO 学习(一)给了java io 进行分类,这一章学习这些类的常用方法
一、File
1、创建一个新的File的实例:
1 /** 2 * 创建一个新的File实例 3 */ 4 File f = new File("D:/file/3.jpg");// unix系统 5 File f2 = new File("D:\\file\\3.jpg");// windows系统 6 File f3 = new File("D:\\file", "3.jpg"); 7 File f4 = new File(f3.toURI()); 8 File f5 = new File("a.jpg");
2、该File实例的常用方法
1 if (f2.canExecute()) { 2 System.out.println("该文件可以被执行"); 3 } 4 if (f2.canRead()) { 5 System.out.println("该文件可以被读取"); 6 } 7 if (f2.canWrite()) { 8 System.out.println("该文件可以被写入(修改)"); 9 } 10 System.out.println("比较两个File实例(f2,f3)的字典:" + f2.compareTo(f3)); 11 if (f.createNewFile()) { 12 System.out.println("当且仅当具由该实例表示的文件尚不存在时,创建一个新的空文件,并返回true"); 13 } 14 if (!f.exists()) { 15 System.out.println("该实例表示的文件不存在"); 16 } 17 if (!f.isFile()) { 18 System.out.println("该实例不是标准文件"); 19 } 20 if (!f.isDirectory()) { 21 System.out.println("该实例不是目录");// 目录就是文件夹 22 } 23 if (!f.isHidden()) { 24 System.out.println("该实例不是隐藏文件"); 25 } 26 // 获取文件名或目录名 27 String name = f.getName(); 28 // 获取文件绝对路径 29 String absolutePath = f.getAbsolutePath(); 30 // 获取文件父目录 31 String parent = f.getParent(); 32 // 获取文件路径 33 String path = f.getPath(); 34 long lastUpdate = f.lastModified(); 35 long length = f.length(); 36 // 创建此抽象路径名指定的目录 37 f.mkdir(); 38 // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录 39 f.mkdirs(); 40 // 重新命名此抽象路径名表示的文件,就是对该文件的路径进行重命名 41 // 如果父路径相同,就是对该文件的重命名,如果父路径不一样,就是移动该文件的位置,目标文件已存在时移动失败 42 f.renameTo(new File("D:/file/2/1.jpg")); 43 // 删除该文件 44 f.delete();
二、InputStream
1、一般创建一个InputStream实例由它的子类 FileInputStream 来完成。
1 /** 2 * 读取文件的原始字节流 3 */ 4 FileInputStream fip = new FileInputStream("D:\\file\\3.jpg");// 通过路径 5 FileInputStream fip2 = new FileInputStream(f2);// 通过File实例
2、它拥有的常用方法以及它子类的常用方法
1 /** 2 * 读取文件的原始字节流 3 */ 4 FileInputStream fip = new FileInputStream("D:\\file\\3.jpg");// 通过路径 5 FileInputStream fip2 = new FileInputStream(f2);// 通过File实例 6 // 获取该流可以读取(或跳过)的字节数的估计值(int) 7 System.out.println(fip.available()); 8 // 获取从输入流读取数据的下一个字节 9 System.out.println(fip.read()); 10 // 从输入流读取一些(new byte[100].length=100)字节数,并将它们存储到缓冲区 new 11 // byte[100],返回读取的字节数 12 System.out.println(fip.read(new byte[100])); 13 // 从输入流的0位置开始读取最多 100字节的数据到一个new byte[100],返回读取的字节数 14 System.out.println(fip.read(new byte[100], 0, 100)); 15 // 跳过并丢弃100个字节数,返回实际跳过的字节数 16 fip.skip(100); 17 if (fip.markSupported()) { 18 System.out.println("这个输入流支持 mark和 reset方法"); 19 // 标记此输入流中的当前位置 20 fip.mark(12); 21 // 将此流重新定位到上次在此输入流上调用 mark方法时的位置 22 fip.reset(); 23 } 24 // 关闭流 25 fip.close(); 26 /** 27 * 子类DataInputStream多了.readLong();等一些方法,别的子类与父类基本相同,多出来的方法我们新人一般用不到 28 */
三、OutputStream
1 // 声明和InputStream基本一样,多了一个:true 表示字节将被写入到文件的末尾,而不是开头(append) 2 FileOutputStream os = new FileOutputStream("D:\\file\\3.jpg", true); 3 // 将指定的字节写入此输出流 4 os.write(0); 5 // 将 new byte[100].length字节从new byte[100]写入此输出流 6 os.write(new byte[100]); 7 // 从new byte[100]写入 50个字节,从偏移 0开始输出到此输出流 8 os.write(new byte[100], 0, 50); 9 // 刷新此输出流并强制任何缓冲的输出字节被写出 10 os.flush(); 11 // 关闭流 12 os.close(); 13 // 创建一个新的字节数组输出流,具有100大小的缓冲区容量,不填不指定大小 14 ByteArrayOutputStream baos = new ByteArrayOutputStream(100); 15 // 创建一个新分配的字节数组 16 byte[] b = baos.toByteArray(); 17 // 将此字节数组输出流的 count字段重置为零,以便丢弃输出流中当前累积的所有输出 18 baos.reset(); 19 // 使用utf-8字符集将缓冲区内容转换为字符串解码字节, 不填则用平台默认 20 baos.toString("utf-8"); 21 /** 22 * 子类DataOutputStream多了.writeLong();.size()等一些方法,别的子类与父类基本相同,多出来的方法我们新人一般用不到 23 */