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              */