「学习笔记」Java基础--IO机制
输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。
1. File类
- File与真实硬盘中的文件或文件夹 不是一个东西
- File是在内存中的一个对象<—映射—>硬盘上的文件或文件夹
- java.io.File类用于文件或目录信息(名称、大小等)的抽象表示方式,不能对文件内容进行访问。
- File类中的常用的方法
- canRead(),canWrite(),isHidden(),isFile(),isDirectory()
- length(),获取文件中字节的个数
- lastModified(),获取文件最后的修改时间—>毫秒值
- *String path = getAbsolutePath(),获取文件的绝对路径 D://test//Test.txt
- 绝对路径<—->相对路径
- 绝对路径可以通过完整的字符串,定位盘符,文件夹,文件
- 相对路径没有盘符的写法,当前工程(项目)所在的位置找寻
- String name = getName(),获取文件的名字 Test.txt
- *boolean = createNewFile(),创建新的文件
- *boolean = mkdir ,创建新的文件夹 外层没有 不能创建
- *boolean = mkdirs,创建新的文件夹 外层没有 可以自动创建
- String pname = getParent(),获取当前file的父亲file名字
- *File file = getParentFile(),获取当前file的父亲file对象
- String[] names = list(),获取当前file的所有儿子名字
- *File[] files = listFiles(),获取当前file的所有儿子对象
- *boolean = delete(),删除文件或空的文件夹 不能删除带元素的文件夹
- 文件夹的路径(找父目录)
//查找当前file的所有父目录
File file = new File("D:\\test\\bbb\\inner\\InnerTest.txt");
File pfile = file.getParentFile();
while(pfile!=null){
System.out.println(pfile.getAbsolutePath());
pfile = pfile.getParentFile();//再找一遍
}- 文件夹的遍历—-需要一个递归
//设计一个方法 用来展示(遍历)文件夹,参数-->file(代表文件或文件夹)
public void showFile(File file){
//获取file的子元素
//files==null是个文件
//files!=null是个文件夹
//files.length!=0是一个带元素的文件夹
File[] files = file.listFiles();//test文件夹所有子元素
if(files!=null && files.length!=0){
for(File f:files){
this.showFile(f);
}
}
//做自己的显示(file是文件或file是一个空的文件夹)
System.out.println(file.getAbsolutePath());
}- 文件夹的删除—-需要一个递归
//设计一个方法 删除文件夹,参数 file
public void deleteFile(File file){
//判断file不是空文件夹
File[] files = file.listFiles();
if(files!=null && files.length!=0){
for(File f:files){
this.deleteFile(f);
}
}
//删除file (file是个文件或file是一个空文件夹)
file.delete();
}2. IO流
- 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
- 流的分类:
- 根据处理数据类型的不同分为:字符流和字节流
- 根据数据流向不同分为:输入流in(读取)和输出流out(写入)
- 操作的目标来区分:
- 文件流,数组流,字符串流,数据流,对象流,网络流…
- IO流的框架结构
|——IO流
|————字节流
|————InputStream
|————FileInputStream
|————DataInputStream
|————ObjectInputStream
|————OutputStream
|————FileOutputStream
|————DataOutputStream
|————ObjectOutputStream
|————PrintStream
|————字符流
|————Reader
|————BufferedReader
|————InputStreamReader
|————Writer
|————BufferedWriter
|————OutputStreamWriter3. 文件流
读取文件中的信息in,将信息写入文件中out;文件流按照读取或写入的单位(字节数)大小来区分