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();
        }
    }
}
目录
相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
1月前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
19天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
42 2
|
2月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
48 17
|
28天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
29天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
37 4
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
1月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
1月前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
2月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
29 6