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