输入和输出处理(一)
- 变量
- 数组
- 对象
- 对象数组
- 集合
- …
- 上述这些方式是临时性数据存储的方案,关闭程序/计算机,对应的数据都会消失。
- 它们将数据存储在RAM
1. 文件API
1.1 文件概述
计算机文件,是存储在某种长期存储设备上的一段数据流。所谓“长期存储设备”一般指磁盘、光盘、磁带等。其特点是所存信息可以长期、多次使用,不会因为断电而消失。
在计算机中每一个文件都拥有着:
- 文件名
- 文件的大小
- 文件的格式
- …
1.2 File类
java.io包下,提供用于操作文件/文件夹(目录)的API。
构造方法:
- File(String pathname) 根据文件/文件夹的路径来构建一个File对象
- File(String parent, String child) 根据文件/文件夹的父路径及子路径来构建一个File对象
- File(File parent, String child) 根据文件/文件夹的父路径File对象(一般指某个文件夹)和子路径来构建一个File对象
// File(String pathname)
File file = new File("d:/a.txt");
File file = new File('d:\\a.txt');
// File(String parent, String child)
File file = new File("d:", "a.txt");
// File(File parent, String child)
File parent = new File("d:/a");
File file = new File(parent, "b.txt");
普通方法:
❤
- exists() : boolean 判断是否存在
- isFile() : boolean 是否是文件
- isDirectory() : boolean 是否是文件夹
// 创建对象
File file = new File("d:/a.txt");
// 判断文件/文件夹是否存在
boolean exists = file.exists();
System.out.println("文件是否存在:" + exists);
// 判断是否是文件
boolean isFile = file.isFile();
System.out.println("是否是文件" + isFile);
// 判断是否是文件夹/目录
boolean isDirectory = file.isDirectory();
System.out.println("是否是文件夹:" + isDirectory);
❤
- length() : long 获取文件大小(单位:字节)
System.out.println(file1.length());
❤
- getPath() : String 获取相对路径
- getAbsolutePath() : String 获取绝对路径
// 创建对象
File file = new File("a.txt");
// 相对路径:以当前的地址为起点来查找该内容
// 类似于 .../demo1/Test.java
// -> a.txt
System.out.println("相对路径:" + file.getPath());
// 绝对路径:通常是从盘符开始,完整描述文件位置的路径就是绝对路径。
// -> D:\eclipse-workspace\day22_IO\a.txt
System.out.println("绝对路径:" + file.getAbsolutePath());
❤
- getName() : String 获取文件/文件夹名
- delete() : boolean 删除文件/空文件夹
File file = new File("d:/b");
// 获取文件/文件夹 的名称
System.out.println("名称为:" + file.getName());
// 删除文件
if(file.exists()) {
// 删除文件/空文件夹 谨慎删除 不会进入回收站[没有经过window程序操作]
// 删除文件夹 需要通过[递归]来进行删除子目录及子文件...
// 思路:一级一级进入到最根处 然后反向层级删除文件
boolean isDelete = file.delete();
if(isDelete) {
System.out.println("删除成功!");
} else {
System.out.println("删除失败!");
}
}
❤
- mkdir() : boolean 创建文件夹
-
- createNewFile() : boolean 创建新文件
File file = new File("d:/C");
if(!file.exists()) {
System.out.println("文件夹不存在!");
// 创建文件夹
boolean success = file.mkdir();
// 创建文件
boolean success = file.createNewFile();
if(success) {
System.out.println("创建文件夹成功!");
}else {
System.out.println("创建文件夹失败!");
}
}
❤
- list() : String[] 获取文件夹下的所有内容的名称列表
- listFiles() : File[] 获取文件夹下的所有内容的File对象列表
- listFiles(FileFilter fileFilter) : File[] 获取文件夹下符合过滤器要求的内容的File对象列表
File file = new File("d:/develop");
// 获取文件夹下的所有子目录/文件
File[] subFiles = file.listFiles();
for (File subFile : subFiles) {
System.out.println(subFile.getName());
}
2. 流的概述
IO(Input Output)
流是个抽象的概念,是对输入输出设备的抽象, 是流向目的地的数据流, Java 程序中,对
于数据的输入/输出操作都是以“流”的方式进行, 设备可以是文件,网络,内存等 。
按照数据的流向划分:(相对于计算机内存/程序来说的)
- 输入流
- 输出流
按照处理的数据单元划分:
- 字节流
- 字符流
按照数据流向及处理单元结合划分:
- 字节输入流
InputStream
- FileInputStream
- 字节输出流
OutputStream
- FileOutputStream
- 字符输入流
Reader
- FileReader
- 字符输出流
Writer
- FileWriter
3. 字节流的使用
(未完待续…)