IO之File类
I/O相关 输入/输出 流(数据流动)
数据流动的方向 读数据(输入Input) 写数据(输出output)
文件流 字符流 对象流 网络流....
1.什么叫文件
一种电脑的存储形式
文件有不同的格式 .txt .doc .ppt .mp4 .jpg .rar …
文件夹?(不算文件)----目录路径(是为了找到不同文件的一个路径)
File----->与电脑上的文件或文件夹产生一一对应的映射关系
File是一个类
1.java.io包中
2.文件或目录路径名的抽象表示形式
3.File与真实硬盘中的文件或文件夹 不是一个东西
File是在内存中的一个对象<—映射—>硬盘上的文件或文件夹
4.File类中的常用的方法
canExecute() 判断是否可以执行此抽象路径名表示的文件。
canRead() 测试应用程序是否可以读取由此抽象路径名表示的文件。
canWrite() 测试应用程序是否可以修改由此抽象路径名表示的文件。
isHidden() 测试此抽象路径名命名的文件是否为隐藏文件。
isFile() 指的是判断当前的File文件是否为一个文件。
isDirectory() 指的是判断当前的FIle文件是否为一个目录。
package testfile;
import java.io.File;
public class TestFile {
public static void main(String[] args) {
//file对象不是真正的文件
//file对象是堆内存中创建出来的一个对象空间
//路径是看创建的对象,是否能与硬盘中 的一个真实文件产生对应映射关系
//通过文件流去读取文件的内容时会出现问题
//系统内硬盘上的文件名字是不区分大小写的,内存中FIle对象的名字是区分大小写的
File file = new File("D://test//Test.txt");
//文件本身的一些属性
System.out.println(file.canExecute());
System.out.println(file.canRead());
System.out.println(file.canWrite());
System.out.println(file.isHidden());
}
}
length()获取文件中字节的个数
lastModified()获取文件最后的修改时间—>毫秒值
package testfile;
import java.io.File;
public class TestFile {
public static void main(String[] args) {
File file = new File("D://test//Test.txt");
long l = file.length();
System.out.println(l);
long time = file.lastModified();//获取文件最后修改时间
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
System.out.println(sdf.format(date));
}
}
String path = getAbsolutePath() 获取文件的绝对路径 D://test//Test.txt
String name = getName() 获取文件的名字 Test.txt
绝对路径和相对路径的区别:
绝对路径 | 相对路径 |
---|---|
绝对路径可以通过完整的字符串 | 相对路径没有盘符的写法 |
定位盘符 文件夹 文件 | 例如:test//Test.txt 当前工程(项目)所在的位置找寻C:\Users\Administrator\IdeaProjects\TestFile |
File file = new File("D://test//Test.txt");
String name = file.getName();//文件的名字 Test.txt
String path = file.getAbsolutePath();//文件的绝对路径 D://test//Test.txt
System.out.println(name);
System.out.println(path);
*boolean = createNewFile() 创建新的文件
*boolean = mkdir 创建新的文件夹 外层没有 不能创建
*boolean = mkdirs 创建新的文件夹 外层没有 可以自动创建
public static void main(String[] args){
//创建一个file对象
File file = new file("D://test//abc.txt");
//通过这个对象,然后在硬盘上创建文件
try{
boolean value = file.creatNewFile();//编译时异常
System.out.println(value);
}catch(IOException e){
e.printStackTrace();
}
}
文件夹在硬盘上其实并不存在,只是在硬盘上划分一个区域而已,硬盘上只有文件所以文件夹
没有大小,也没有创建与否,因此文件夹的创建不会产生异常。
public static void main(String[] args){
//创建一个新的file对象
File file = new File("D:test//aaa");
//在硬盘上创建一个新的文件夹
boolean value = file.mkdir();//外层(父元素)真实存在,只能父元素下面的子元素的文件夹。
/*
File file = new File("D://test//bbb/inner");
boolean value = file.mkdirs();当外层文件夹(父元素)不存在时,先创建父元素再创建子元素文件夹。
*/
System.out.println(value);
}
String pname = getParent() 获取当前file的父亲file名字
File file = getParentFile() 获取当前file的父亲file对象
public static void main(String[] args){
File file = new File("D://test//Test.txt")
String pname = file.getParent();//获取file的父元素的名字-->test
File path = file.getParentFile();//当前file的父元素的对象 file--> D://test
System.out.println(name);
System.out.println(path);
}
String[] names = list() 获取当前file的所有儿子名字
File[] files = listFiles() 获取当前file的所有儿子对象
boolean = delete() 删除文件或空的文件夹 不能删除带元素的文件夹
public static void main(String[] args){
File file = new File("D://test//Test.txt");
File[] files = file.listFiles();
System.out.println(files);
//数组对象为空,证明当前的file是一个文件
//数组对象不为空,证明当前的file是一个文件夹
//数组的长度不为0,证明当前的file是一个空的文件夹,文件夹内有元素
File file0 = new File("D://test/aaa");
boolean value = file.delete();
Sytem.out.pritln(value);
//当删除的文件夹有内容就不会删除。
}
null
true
2.什么叫文件流 做什么
读取文件中的内容 向文件中写内容
文件输入流 文件输出流
字节型文件输入流 字节型文件输出流
字符型文件输入流 字符型文件输出流