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自带的记事本软件打开,我们可以读懂里面的内容,就使用字符流。否则使用字节流。如果不知道该使用哪种类型的流,就使用字节流。
2.2 字节流写数据
字节流抽象基类
- InputStream:这个抽象类是比表示字节输入流的所有类的超类
- OutputStream:这个抽象类是表示字节输出流的所有类的超类
- 子类名特点:子类名都是以其父类名作为子类名的后缀
FileOutpotStream:文件输出流用于将数据写入File
- FileOutpotStream(String name):创建文件输出流以指定的名称写入文件
使用字节输出流写数据的步骤:
- 创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
- 调用字节输出流对象的写数据方法
- 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)
import java.io.FileOutputStream;
import java.io.IOException;
public static void main(String[] args) throws IOException {
//创建字节输出流对象
//FileOutputStream(String name):创建文件输出流以指定的名称写入文件
FileOutputStream fos = new FileOutputStream("D:\\java_\\黑马程序员\\fos.txt");
/*
字节输出流做了三件事情
调用系统功能创建了文件
创建了字节输出流对象
让字节输出流对象指向创建好的文件
*/
// void write(int b):将指定的字节写入此文件输出流
fos.write(97);
// fos.write(57);
// fos.write(55);
// void close();关闭此文件输出流并释放与此流相关联的任何系统资源。
fos.close();
}
|