文件---把数据持久化到磁盘的载体
文件的组成:1.文件的基本属性【文件命名,文件类型,文件的创建时间,文件的大小.......】
2.文件中的数据
我们要想通过java提供的输入输出流读写文件中的内容就得先学会操作文件。
Java中为我们提供了一个专门操作文件的java类--java.io.File类
File类的定义 public class File
File类的静态成员变量:
static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static char pathSeparatorChar 与系统相关的路径分隔符。
static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static char separatorChar 与系统相关的默认名称分隔符。
- package com.wangxing.test1;
-
- import java.io.File;
-
- public class TestFileClass {
- public static void main(String args[]){
- //File--java类--操作文件的java类
- //静态成员变量:
- //static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。
- //static char pathSeparatorChar 与系统相关的路径分隔符。
- System.out.println("String pathSeparator=="+File.pathSeparator); //String--;
- System.out.println("char pathSeparatorChar=="+File.pathSeparatorChar); //char--;
- //static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
- //static char separatorChar 与系统相关的默认名称分隔符。
- System.out.println("String separator=="+File.separator); //String--\
- System.out.println("char separatorChar=="+File.separatorChar); //char--\
- //“\”在文件路径中出现,它是路径分隔符
- //为什么需要使用静态成员变量表示路径分隔符?
- //原因是因为不同操作系统的路径分隔符不一样,所以需要使用静态成员变量来统一路径分隔符。
- //File.separator静态成员变量表示的路径分隔符会在不同的操作系统中被转换成适合当前操作系统的路径分隔符
- //F:\20220607\java基础\20220722Java基础(23)\文件操作.txt
- //输出错误
- //System.out.println("F:\20220607\java基础\20220722Java基础(23)\文件操作.txt");
- //使用强制转义字符来转义
- System.out.println("F:\\20220607\\java基础\\20220722Java基础(23)\\文件操作.txt");
- //使用File.separator静态成员变量来表示路径分隔符
- System.out.println("F:"+File.separator+"20220607"+File.separator+"java基础"+File.separator+"20220722Java基础(23)"+File.separator+"文件操作.txt");
- }
-
- }
File类的构造方法
File(String pathname) 通过给定的文件路径字符串创建新的 File实例。
File(String parent, String child) 通过给定的文件位置字符串和给定的文件名称字符串创建新的 File实例。
File(File parent, String child) 通过给定的文件位置File对象和给定的文件名称字符串创建新的 File实例。
- package com.wangxing.test1;
- import java.io.File;
- public class TestFileClass2 {
- public static void main(String args[]){
- //Flie类的构造方法
- //使用File类的构造方法创建出File类的对象并不会创建出真实的文件
- //仅仅只表示当前文件对象
- //File(String pathname) 通过给定字符串类型的文件路径创建新的 File实例。
- String pathnamestr="F:"+File.separator+"mytest"+File.separator+"test1.txt";
- File file1=new File(pathnamestr);
- //File(String parent, String child) 通过给定的文件位置字符串和给定的文件名称字符串创建新的 File实例。
- String parent="F:"+File.separator+"mytest";
- String child="test1.txt";
- File file2=new File(parent,child);
- //File(File parent, String child) 通过给定的文件位置File对象和给定的文件名称字符串创建新的 File实例。
- //File parent--文件对象类型的位置
- //String child--String类型的文件名称
- String path="F:"+File.separator+"mytest";
- File pathFile=new File(path); //文件位置的文件对象
- String filename="test1.txt"; //文件名称的字符串
- File file3=new File(pathFile,filename);
- }
- }
File类的实例方法
boolean exists() 判断路径名表示的文件或目录是否存在。
boolean createNewFile() 创建新文件
boolean mkdirs() 创建新的文件夹
boolean delete() 删除文件/文件夹
删除文件夹的时候要将该文件夹下的文件和子文件夹全部删除
boolean canRead() 判断文件是否可读
boolean canWrite() 判断文件是否可写
boolean isHidden() 判断文件是否为隐藏文件。
boolean isFile() 判断文件对象是否为普通文件。
boolean isDirectory() 判断文件对象是否为目录。
String getPath() 得到文件对象的路径名字符串。
String getName() 得到文件对象所表示的文件或目录的名称。
String getParent() 得到文件对象所表示的路径的父目录路径
long length() 得到文件对象所表示的文件的长度。
long lastModified() 得到文件对象所表示的文件上次修改的时间。
String[] list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
- package com.wangxing.test1;
-
- import java.io.File;
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- public class TestFileClass3 {
- public static void main(String args[])throws Exception{
- //Flie类的实例方法
- //创建表示文件的文件对象
- String filepath="F:"+File.separator+"mytest"+File.separator+"test1.txt";
- File file=new File(filepath);
- //创建表示文件夹的文件对象
- String wenjianjiapath="F:"+File.separator+"mytest"+File.separator+"test";
- File wenjainjiafile=new File(wenjianjiapath);
-
- //1.boolean exists() 判断路径名表示的文件或目录是否存在。false表示不存在
- //System.out.println("exists-判断文件是否存在=="+file.exists());
- //System.out.println("exists-判断文件夹是否存在=="+wenjainjiafile.exists());
- //2.boolean createNewFile() 创建新文件【当创建的文件存在是就会创建失败】
- /*
- boolean flag1=file.createNewFile();
- if(flag1){
- System.out.println("test1.txt文件创建成功");
- }else{
- System.out.println("test1.txt文件创建失败");
- }
- */
- //3.boolean mkdirs()创建新的文件夹【当创建的文件夹存在是就会创建失败】
- /*
- boolean flag2=wenjainjiafile.mkdirs();
- if(flag2){
- System.out.println("test文件夹创建成功");
- }else{
- System.out.println("test文件夹创建失败");
- }
- */
- //4.boolean delete() 删除文件/文件夹
- //删除文件
- /*
- boolean flag3=file.delete();
- if(flag3){
- System.out.println("test1.txt文件删除成功");
- }else{
- System.out.println("test1.txt文件删除失败");
- }
- */
- //删除文件夹
- //删除文件夹的时候要将该文件夹下的文件和子文件夹全部删除
- /*
- boolean flag4=wenjainjiafile.delete();
- if(flag4){
- System.out.println("test文件夹删除成功");
- }else{
- System.out.println("test文件夹删除失败");
- }
- */
- /*
- //5.boolean canRead() 判断文件是否可读
- System.out.println("canRead--判断文件是否可读=="+file.canRead());
- //6.boolean canWrite() 判断文件是否可写
- System.out.println("canWrite--判断文件是否可写 =="+file.canWrite());
- //7.boolean isHidden() 判断文件是否为隐藏文件。
- System.out.println("isHidden--判断文件是否为隐藏文件 =="+file.isHidden());
- //8.boolean isFile() 判断文件对象是否为普通文件。
- System.out.println("file对象是否表示一个文件 =="+file.isFile());
- System.out.println("wenjainjiafile对象是否表示一个文件 =="+wenjainjiafile.isFile());
- //9.boolean isDirectory() 判断文件对象是否为目录。
- System.out.println("file对象是否表示一个文件夹 =="+file.isDirectory());
- System.out.println("wenjainjiafile对象是否表示一个文件夹 =="+wenjainjiafile.isDirectory());
- //10.String getPath() 得到文件对象的路径名字符串。
- System.out.println("得到文件的路径=="+file.getPath());
- System.out.println("得到文件夹的路径=="+wenjainjiafile.getPath());
- //11.String getName() 得到文件对象所表示的文件或目录的名称。
- System.out.println("得到文件的名称=="+file.getName());
- System.out.println("得到文件夹的名称=="+wenjainjiafile.getName());
- //12.String getParent() 得到文件对象所表示的路径的父目录路径
- System.out.println("得到文件的父目录路径=="+file.getParent());
- System.out.println("得到文件夹的父目录路径=="+wenjainjiafile.getParent());
- //13.long length() 得到文件对象所表示的文件的长度。
- System.out.println("得到文件的大小=="+file.length());
- //long lastModified() 得到文件对象所表示的文件上次修改的时间。
- System.out.println("文件上次修改的时间=="+file.lastModified());
- Date date1=new Date(file.lastModified());
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm E");
- String lastupdatetime=sdf.format(date1);
- System.out.println("文件上次修改的时间=="+lastupdatetime);
- */
- //得到“F:\20220607\java基础\20220722Java基础(23)”下的文件和文件夹名称
- //String[] list() 得到文件对象代表的文件夹中的所有文件和文件夹名称返回一个字符串数组
- String filepath1="F:\\20220607\\java基础\\20220722Java基础(23)";
- File dirfile=new File(filepath1);
- String filenames[]= dirfile.list();
- for(String name:filenames){
- System.out.println(name);
- }
- }
- }
File[] listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
实例:得到指定文件夹中的指定类型的文件,C:\Windows 文件夹中的可以执行文件“.exe”
- package com.wangxing.test1;
-
- import java.io.File;
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- public class TestFileClass4 {
- private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd E HH:mm");
- public static String getTime(long haomiaoshu){
- Date date=new Date(haomiaoshu);
- String time=sdf.format(date);
- return time;
- }
- public static void main(String args[])throws Exception{
- //需求:得到指定文件夹中的指定类型的文件
- // C:\Windows 文件夹中的可以执行文件“.exe”
- //File[] listFiles() 得到文件对象代表的文件夹中的所有文件和文件夹的文件对象,返回一个文件对象数组
- //创建表示文件夹的文件对象
- String dirpath="C:"+File.separator+"Windows";
- File dirfile=new File(dirpath);
- File myfiles[]=dirfile.listFiles();
- int count=0;
- for(File file:myfiles){
- String name=file.getName();
- String time=getTime(file.lastModified());
- String filetype="";
- long size=0;
- if(file.isFile()){
- String houzuiming=name.substring(name.lastIndexOf("."));
- if(houzuiming.equals(".dll")){
- filetype="可执行文件";
- size=file.length()/1024;
- System.out.println(name+"\t\t"+time+
- "\t\t"+filetype+"\t\t"+size+"kb");
- count++;
- }
- }
- }
- System.out.println("总共"+count+"个文件");
- }
- }
-
-