File
字节流
字符流
特殊操作流
1.1 File类概述和构造方法
File:它是文件目录路径名的抽象表示文件和目录是可以通过File封装成对象的
对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以事不存在的。将来是 要通过具体的操作把这个路径的内容转换为具体存在的
import java.io.File;
public static void main(String[] args) {
// File(String pathname):
// 通过将给定的 路径名字符串 转换为 抽象路径名 来创建新的 File实例。
File f1 = new File("E:\itcast\java.text");
System.out.println(f1);
// File(String parent,String child):
// 从 父路径名字符串 和 子路径名字符串 创建新的File实例。
File f2 = new File("E:\itcast", "java.text");
System.out.println(f2);
// File(File parent,String child):
// 从 父抽象路径名 和 子路径名字符串 创建新的File实例。
File f3 = new File("E:\itcast");
File f4 = new File(f3, "java.text");
System.out.println(f4);
}
运行结果
1.2 File类创建功能
import java.io.File;
import java.io.IOException;
public static void main(String[] args) throws IOException {
// 需求1:我要在E:\itcast目录下创建一个文件java.text
File f1 = new File("E:\itcast\java.text");
System.out.println(f1.createNewFile());
// 需求2:我要在E\:itcast目录下创建一个目录JavaSE
File f2 = new File("E:\itcast\JavaSE");
System.out.println(f2.mkdir());
// 需求3:我要在E:\itcast目录下创建一个多级目录JavaWEB\HTML
File f3 = new File("E:\itcast\javaWEB\HTML");
//System.out.println(f3.mkdir());
System.out.println(f3.mkdirs());
// 需求4:我要在E:\itcast目录下创建一个文件Javase.text
File f4 = new File("E:\itcast\javase.text");
System.out.println(f4.mkdir());
}
1.3 File类删除功能
import java.io.File;
import java.io.IOException;
public static void main(String[] args) throws IOException {
// File f1 = new File("E:\itcast\java.txt");
//需要1:在当前模块目录下创建java.txt文件
File f1 = new File("黑马程序员\java.txt");
// System.out.println(f1.createNewFile());
//需要2:删除当前模块目录下的java.txt文件
System.out.println(f1.delete());
System.out.println("-----------");
//需要3:在当前模块目录下创建itcast目录
File f2 = new File("黑马程序员\itcast");
System.out.println();
//需求4:删除当前模块目录下的itcast目录
System.out.println();
}
1.4 File类判断和获取功能
import java.io.File;
public static void main(String[] args) {
// 创建一个File对象
File f = new File("黑马程序员\java.txt");
// public boolean isDirectory():测试此 抽象路径名 表示的File 是否为 目录
// public boolean isFile():测试此 抽象路径名 表示的File 是否为 文件
// public boolean exists():测试此 抽象路径名 表示的File 是否 存在
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.exists());
// public String getAbsolutePath():返回此 抽象路径名 的 绝对路径名字符串
// public String getPath():将此 抽象路径名 转换为 路径名字符串
// public String getName():返回由此 抽象路径名 表示的 文件或目录的名称
System.out.println(f.getAbsolutePath());
System.out.println(f.getPath());
System.out.println(f.getName());
// public String[] list():返回此 抽象路径名 表示的 目录中的文件和目录的名称 字符串数组
// public File[] listFiles():返回此 抽象路径名 表示的 目录中的文件和目录的File对象 数组
File f2 = new File("E:\itcast");
String[] strArray = f2.list();
for (String str : strArray) {
System.out.println(str);
}
System.out.println("------------");
File[] fileArray = f2.listFiles();
for (File file : fileArray) {
// System.out.println(file);
// System.out.println(file.getName());
if (file.isFile()) {
System.out.println(file.getName());
}
}
}
2. 字节流
2.1 IO流概述和分类
IO流概述:
- IO:输入/输出(Input/Output)
- 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流 ,流的本质是数据传输
- IO流就是用来处理设备间数据传输问题的
常见的应用:文件复制;文件上传;文件下载
IO流分类:
按照数据的流向
- 输入流:读数据
- 输出流:写数据
按照数据类型来分
- 字节流:字节输入流;字节输出流
- 字符流:字符输入流;字符输出流
- 一般来说,我们说IO流的分类是按照数据类型来分的
那么这两种流都在什么情况下使用呢?
- 如果数据通过Window自带的记事本软件打开,我们可以读懂里面的内容,就使用字符流。否则使用字节流。如果不知道该使用哪种类型的流,就使用字节流。



