File类(路径):文件路径 文件夹路径
路径:
1.绝对路径 :固定的路径 从盘符开始
2.相对路径:相对于某个位置 指当前项目下
创建功能:
java
File f=new File("e:/a.txt");
try {
boolean b1 = f.createNewFile();//新建文件
System.out.println(b1);
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println(f);//重写了toString()
java
//根据一个目录和一个子文件(子目录)得到一个File对象 必须要有abc这个文件夹
File f=new File("e:/abc","b.txt");
try {
boolean b = f.createNewFile();
System.out.println(b);
} catch (IOException e) {
throw new RuntimeException(e);
}
System.out.println(f);
}
java
//在e盘下创建一个ddd文件夹
File f=new File("e:/ddd");
boolean b = f.mkdir();//如果存在ddd文件夹就不创建 不存在就创建一个ddd文件夹
System.out.println(b);//true
File f1=new File(f,"ccc.txt");//在ddd文件夹下创建ccc文件
try {
boolean b1 = f1.createNewFile();
System.out.println(b1);//true
} catch (IOException e) {
throw new RuntimeException(e);
}
java
//创建一个含有子目录的目录
File f=new File("e:/com/muzhou/test");
boolean b = f.mkdirs();
System.out.println(b);//true
重命名功能:
(注意:如果路径名相同就是改名 如果路径名不同就是改名并剪切-粘贴)
java
File f=new File("e:/abc/a.txt");
File newf=new File("e:/abc/aaa.txt");
boolean b = f.renameTo(newf);//给文件重命名
System.out.println(b);//true
java
File f=new File("e:/abc");
boolean b = f.renameTo(new File("e:/cba"));//给文件夹重命名
System.out.println(b);//true
删除功能:
(注意:不走垃圾回收站 永久删除)
java
File f=new File("e:/cba");
//如果该目录下有子文件 要先删除子文件才能删除目录
boolean b = f.delete();//删除目录
System.out.println(b);//false
判断功能:
java
File f=new File("e:/cba");
System.out.println(f.isDirectory());//判断文件夹
System.out.println(f.isFile());//判断文件
File f1=new File("e:/a.txt");
System.out.println(f1.exists());//是否存在
System.out.println(f1.canRead());//是否可读
System.out.println(f1.canWrite());//是否可写
System.out.println(f1.isHidden());//是否隐藏
获取功能:
java
//获取绝对路径(带盘符)
File f1=new File("e:/cba/b.txt");
String path = f1.getAbsolutePath();//获取绝对路径(带盘符)
System.out.println("绝对路径"+path);//e:\cba\b.txt
File f2=new File("ccc.txt");
String p = f2.getAbsolutePath();
System.out.println(p);//E:\job\IO7.12\ccc.txt
System.out.println("相对路径"+f2.getPath());//ccc.txt 获取相对路径(不带盘符) 相对于当前项目所在的路径
System.out.println("文件名"+f2.getName());//文件名ccc.txt
System.out.println("文件的字节长度"+f1.length());//文件的字节长度8
System.out.println("最后一次被修改的时间"+f1.lastModified());//最后一次被修改的时间1720834772391 毫秒值
long time=f1.lastModified();
Date d=new Date(time);
System.out.println(d);//Sat Jul 13 09:39:32 CST 2024
获取数组:
java
//获取指定目录下所有文件或者文件夹的名称数组
File f=new File("e:/cba");
String[] list = f.list();
for (String s : list) {
System.out.println(s);
}
//获取File数组
File[] files=f.listFiles();
for (File file : files) {
System.out.println("获取文件的名称"+file.getName()+"获取文件最后一次被修改的时间"+
new Date(file.lastModified()));
}
开发中建议使用
java
File f=new File("e:/cba");
File[] files=f.listFiles();
for(int i=0;i<files.length;i++){
File ff=files[i];
if(ff.getName().endsWith("txt")){
System.out.println("文件名"+ff.getName()+"路径"+ff.getAbsolutePath());
}
}
递归:(自己调自己)不建议使用
java
public static void main(String[] args) {
File f=new File("e:/");
getFile(f);
}
public static void getFile(File f){
//用递归深入目录下多层子目录搜索文件
File[] files=f.listFiles();
for (int i = 0; i <files.length ; i++) {
File ff=files[i];
if(ff.isDirectory()){
getFile(ff);//如果是目录就再进 getFile() 继续调用
}else{
//如果是文件
if(ff.getName().endsWith("txt")){
System.out.println("文件名"+ff.getName()+"路径"+ff.getAbsolutePath());
}
}
}
}
Windows系统 支持/ 也支持\
Linux系统 只支持/
开发中尽量用/ 即可跨平台
创建文件(文件夹)
如果不写盘符文件(夹)就会创建在项目下(相对路径)
IO流
概述:
1.IO 流用来处理设备之间的数据传输
2.Java 用于操作流的类都在IO包中
3.Java 对数据的操作是通过流的方式
流按流向分为两种:1.输入流 2.输出流
流按操作类型分为两种:1.字节流 2.字符流
字节流: 可以操作任何数据,在计算机中任何数据都是以字节的形式存储的
字符流: 字符流只能操作字符(文本)数据 比较方便
IO流常用的父类
字节流的抽象父类:InputStream OutputStream
字符流的抽象父类:Reader Writer
注意:使用的时候处理异常
java
public static void main(String[] args) {
try {
FileInputStream fi=new FileInputStream("e:/a.txt");
int read = fi.read();
System.out.println((char)read);//read()方法 每次读一个字节 会把字节byte类型提升为int类型
} catch (Exception e) {
throw new RuntimeException(e);
}
}