Java——文件类File

1、boolean createNewFile():在指定路径创建文件,如果文件已经存在,则不创建,返回false.输出流对象一旦创建,如果文件存在,则会覆盖

    File file = new File("file01.txt");
    file.createNewFile();

此时系统会提示对createNewFile添加一个try-catch抛出异常检测,因此代码可以写成

File file = new File("file01.txt");
        try {
            file.createNewFile();
            System.out.println("文件创建成功");
        } catch (IOException e) {
            System.out.println("文件创建不成功");
        }

2、如上,设置文件名称以及路径,主要是四个方法:

1)、File(String pathName): pathName是路径名
①”xxx.yyy” 表示在当前项目的文件夹下面创建一个xxx.yyy的文件
②”/”表示在当前磁盘路径:”/”表示在当前磁盘的目录路径。但是不能在/后面直接添加文件或者文件夹名称,”/file”这种写法会报错,如果想在当前磁盘下创建文件那么可以使用绝对路径”C:/”(也可以是D、E、F)或者使用 2)、3)的方法:

    File file= new File("/");    
    File file1 = new File("/", "file.txt");

这两种方法都可以实现。

③”../”表示在当前文件夹的上一层文件夹的路径:”../../”表示在当前文件夹的上两层文件夹的路径

File file1 = new File("../file01.txt");

2)、File(String parent, String child): 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例,通常parent是一个目录名,而child是一个文件名。如果parent是空的,那么效果和一个参数时候的相同。

File file3 =new File("/", "file03.txt");

3)、File(File parent, String child): 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例,即在parent的目录下创建一个child文件或者文件夹,其中parent必须是文件路径不能是文件。

File file4 = new File("../");    //表示上一层文件夹目录
File file5 = new File(file4, "file04.txt");

4)、File(URL url): 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

3、创建文件夹:
boolean mkdir();创建文件夹

File file6 = new File("file06");
file6.mkdir();

boolean mkdirs();创建多级文件夹

File file6 = new File("/file06/file");
file6.mkdirs();

4、重命名:
boolean renameTo(File dest): 重新命名此抽象路径名表示的文件。
1)、对文件进行重命名操作。
①此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的。即只能移动到该分区下的文件夹内,不能跨分区。

② 如果已经存在具有目标抽象路径名的文件,即该目录路径下存在重命名后的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。另外,重命名之后,原文件将不复存在,代码中也找不到原文件,想要使用必须使用重命名之后的文件。

    File fileRename2 = new File("file1 RenameTo2.txt");
        if (file1.exists()) {
            if (file1.renameTo(fileRename2)) {
                System.out.println("重命名2成功");
            }else {
                System.out.println("重命名2失败");
            }
        }else {
            System.out.println("找不到file1");
        }

    if (file1.exists()) {               
        System.out.println(file1.isFile());     
    }else {
        System.out.println("file1找不到");
    }

运行一次输出的结果是:

重命名2成功
file1找不到

说明我们成功将file1重命名。

运行两次输出的结果是:

重命名2失败
true

说明程序又新建了一个file1,但是由于file1 RenameTo2.txt文件已经存在了,导致重命名失败,因此此处的file1仍然存在没有被转移和重命名。

2)、对文件夹进行重命名操作
对文件夹重命名只能操作最后一层的文件夹

File file6 = new File("file06/file/ggg/fff");
try {
    file6.mkdirs();
    System.out.println("文件夹创建成功");
} catch (Exception e) {
    System.out.println("文件夹创建失败");
}

File file7 =new File("file06/file6");
if (file6.renameTo(file7)) {
    System.out.println("file6重命名成功");
}else {
    System.out.println("file6重命名失败");
}

通过上述代码,我们可以发现在当前项目路径下存在一个file06文件夹,下面包含两个文件夹file和file6,file里面包含ggg文件夹,ggg里并不包含fff文件夹。因为我们下面已经把fff文件夹重命名为file6,并且把这个文件夹移到了file06下面,和file同一层路径。

5、删除操作:(如果是对文件夹操作的话文件夹必须是空的,否则不能删除)
boolean delete():删除此抽象路径名表示的文件或目录,删除失败返回false
void deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。在程序退出时删除指定文件

6、确认操作:
boolean compareTo(File pathName):按字母顺序比较两个抽象路径名。
boolean exists():测试此抽象路径名表示的文件或目录是否存在。
boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录(文件夹)。
boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。

7、获取信息
String getName() : 返回由此抽象路径名表示的文件或目录的名称。
String getPath():将此抽象路径名转换为一个路径名字符串。
long length():返回由此抽象路径名表示的文件的长度,单位byte,如果希望返回KB,则把该值 /1000 即可,并且强制转成float类型。
String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
File getAbsoluteFile() :返回此抽象路径名的绝对路径名形式,返回一个File对象,可以获取之后调用其他方法来使用。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串,返回一个字符串,仅用来保存路径名。
String getParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。如果当前文件路径是相对路径,没有父目录,但仍要使用父目录,则可以使用 file.getAbsoluteFile().getParent() 先获取绝对路径的文件,再在绝对路径的基础上获得父目录。
File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
long getTotalSpace():返回此抽象路径名指定的分区大小。
long getUsableSpace():返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

8、文件夹的遍历

    public static void main(String[] args) {
        printFiles(new File("G:/Android/代码"), 1);
    }

    public static void printFiles(File dir , int tab) {
        if (dir.isDirectory()) {
            File next[] = dir.listFiles() ;
            for (int i = 0; i < next.length; i++) {
                for (int j = 0; j < tab ; j++) {
                    System.out.print("|--");
                }
                System.out.println(next[i].getName());
                if (next[i].isDirectory()) {
                    printFiles(next[i], tab+1);
                }
            }
        }
    }

如上,即可遍历出我的磁盘上 G:/Android/代码 文件夹下面的所有文件及文件夹。

9、文件的读写
读取文件:

File file = new File("test.txt") ;
FileInputStream fis = new FileInputStream(file);         //创建文件输入流,字节流
InputStreamReader isr = new InputStreamReader(fis, "GBK") ;   //创建输入流的reader,字符流
BufferedReader br = new BufferedReader(isr) ;        //创建带有缓冲的输入reader

String lineString ;      //用来存储读取到的一行数据
while ((lineString = br.readLine()) != null) {         //readLine读取一行数据
        System.out.println(lineString);
}
//关闭数据流,先打开的后关闭
br.close();
isr.close();
fis.close();

然后对以上添加try/catch即可。其中file是要读取的文件。

写入文件:
方式同读取一样,创建三个流,来写入文件,最后依次关闭三个流。

File newFile = new File("newtest.txt") ;
FileOutputStream fos = new FileOutputStream(newFile) ;  //创建输出流
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK") ;
BufferedWriter bw = new BufferedWriter(osw) ;

bw.write("床前明月光\n");
bw.write("疑是地上霜\n");
bw.write("举头望明月\n");
bw.write("低头思故乡\n");

bw.close();
osw.close();
fos.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值