java-文件对象

简介: 文件对象

文件对象

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

       File file = new File("test.txt");
       //打印其绝对路径
       System.out.println(file.getAbsolutePath());

       //创建目录,返回一个布尔类型的值
        System.out.println(file.mkdirs());

        //路径完整存在才可以
       File file1 = new File("test.txt/test1.txt");
        try {
   
            System.out.println(file1.createNewFile());
        } catch (IOException e) {
   
            e.printStackTrace();
        }

        //mkdirs能把路径前面未创建的目录创建


        File file2 = new File("copy.txt");
        //快速获取其长度
        System.out.println(file2.length());
        System.out.println(file2.delete());

        File file3 = new File("D:");
        System.out.println(file3.getFreeSpace()/1024/1024/1024 + "G");

        File file4 = new File(".");
        for (String s: file4.list()) {
   
            System.out.println(s);
        }

    }
}

文件拷贝带进度条

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

        File file = new File("NeverBeFar.mp4");

        try(FileInputStream fis = new FileInputStream(file);
        FileOutputStream fos = new FileOutputStream("copy.mp4")){
   

        byte[] buffer = new byte[1024 * 1024];
        int len ;
        long total = file.length(),sum = 0;
        while ((len = fis.read(buffer)) != -1) {
   
            fos.write(buffer, 0, len);
            sum += len;
            System.out.println("文件已经拷贝了 " + (sum * 100 / total) + "%");
        }

        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        } catch (IOException e) {
   
            e.printStackTrace();
    }
    }
}


缓冲流

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   
        //缓冲技术是为了解决CPU、内存设备和IO处理速度冲突的问题
        // CPU速度远大于IO速度,内存设备也大于IO设备,如此会造成性能损耗
        //如果缓冲区中存在要读取的数据,会直接从中读取

        try(BufferedInputStream stream = new BufferedInputStream(new FileInputStream("test.txt/test1.txt"))){
   

              //会先从缓冲区找数据,不够再去文件区中查找
            System.out.println((char) stream.read());

            //IO操作不能重复读取,但是加入缓冲机制后,可以保存一部分内容

            //加入标记可以回溯到指定位置
            stream.mark(0);
            System.out.println((char) stream.read());
            stream.reset();
            System.out.println((char) stream.read());


            //缓冲也是支持嵌套的,缓冲流里面可以嵌套缓冲流


        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}
目录
相关文章
|
1天前
|
Java
【Java开发指南 | 第二十一篇】Java流之文件
【Java开发指南 | 第二十一篇】Java流之文件
11 0
|
1天前
|
安全 Java 编译器
java中类与对象回顾总结-2
java中类与对象回顾总结
16 3
|
1天前
|
Java 编译器
java中类与对象回顾总结-1
java中类与对象回顾总结
14 3
|
1天前
|
消息中间件 Java RocketMQ
MQ产品使用合集之在同一个 Java 进程内建立三个消费对象并设置三个消费者组订阅同一主题和标签的情况下,是否会发生其中一个消费者组无法接收到消息的现象
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
9 1
|
1天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
1天前
|
Java 编译器
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
【Java开发指南 | 第一篇】类、对象基础概念及Java特征
11 4
|
1天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
23 4
|
1天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
17 0
|
1天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
1天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯