Java代码中对文件的操作

这篇具有很好参考价值的文章主要介绍了Java代码中对文件的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

这几天的项目涉及到了文件的操作,我这边做一下整理

环境说明

jdk版本:1.8.0_311文章来源地址https://www.toymoban.com/news/detail-656519.html

对文件的操作

1、保存文件

/**
 * 保存文件
 *
 * @param file 文件
 * @param path 文件保存目录
 * @param name 保存后的文件名字
 */
public void saveFile(MultipartFile file, String path, String name) throws Exception {
    if (file == null) {
        throw new Exception("请上传有效文件!");
    }
    // 若目录不存在则创建目录
    File folder = new File(path);
    if (!folder.exists()) {
        folder.mkdirs();
    }

    // 生成文件,folder为文件目录,newName为文件名
    file.transferTo(new File(folder, name));
}

2、删除文件

/**
 * 删除指定目录下的指定文件
 *
 * @param path 文件路径(路径结尾不带“/”)
 * @param name 文件名称
 */
public void delFile(String path, String name) {
    File file = new File(path + "/" + name);
    file.delete();
}

3、删除指定的空目

/**
 * 删除指定的空目录,如果往上2层的目录也是空的,则一起删除
 *
 * @param path 目录路径(路径结尾不带“/”)
 */
public void delBlankDir(String path) {
    for (int i = 0; i < 3; i++) {
        File dirFile = new File(path);
        if (dirFile.length() == 0) {
            dirFile.delete();
            path = path.substring(0, path.lastIndexOf("/"));
        } else {
            break;
        }
    }
}

4、验证文件是否是MP3格式

/**
 * 验证是否是MP3格式的文件
 *
 * @param multipartFile 验证的文件
 * @return true:是MP3、false:不是MP3
 */
public boolean isMP3File(MultipartFile multipartFile) {
    try {
        byte[] headerBytes = new byte[4];
        multipartFile.getInputStream().read(headerBytes);
        if (headerBytes[0] == (byte) 0x49 && headerBytes[1] == (byte) 0x44 &&
                headerBytes[2] == (byte) 0x33) {
            return true;
        }
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
    return false;
}

5、音频格式转换

/**
 * 音频文件格式转换
 *
 * @param fpath  需要转换的音频文件路径
 * @param target 转换后的音频文件路径
 */
public void transferAudioPcm(String fpath, String target) {
    List<String> commend = new ArrayList<>();
    String path = "";
    if (SystemUtils.isLinux()) {
        path = "修改成Ffmpeg文件的路径";
    } else if (SystemUtils.isWindows()) {
        path = "修改成Ffmpeg文件的路径";
    }
    commend.add(path);
    commend.add("-y");
    commend.add("-i");
    commend.add(fpath);
    commend.add("-f");
    commend.add("s16le");
    commend.add("-ar");
    commend.add("4000");
    commend.add("-ac");
    commend.add("-1");
    commend.add(target);
    try {
        ProcessBuilder builder = new ProcessBuilder();
        builder.command(commend);
        Process p = builder.start();
        p.waitFor();
        p.destroy();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

6、改变linux系统下的文件权限

/**
 * 改变linux系统下的文件权限
 *
 * @param mod  修改后的权限
 * @param path 文件路径
 */
public void changePermission(String mod, String path) throws Exception {
    // ProcessBuilder processBuilder = new ProcessBuilder("chmod", "775", "/data/a.txt");
    ProcessBuilder processBuilder = new ProcessBuilder("chmod", mod, path);
    Process process = processBuilder.start();
    int exitCode = process.waitFor();
    if (exitCode == 0) {
        System.out.println("File permission changed successfully!");
    } else {
        System.out.println("Failed to change file permission.");
    }
}

7、查询服务器磁盘空间

/**
 * 查询服务器磁盘空间
 *
 * @return map
 */
public Map<String, String> getDiskInfo() {
    // 总空间
    long totalSpace = 0;
    // 已用空间
    long usableSpace = 0;
    // 可用空间
    long unallocatedSpace = 0;
    for (FileStore fileStore : FileSystems.getDefault().getFileStores()) {
        try {
            totalSpace += fileStore.getTotalSpace();
            usableSpace += fileStore.getUsableSpace();
            unallocatedSpace += fileStore.getUnallocatedSpace();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    DecimalFormat decimalFormat = new DecimalFormat("#.00");
    Map<String, String> map = new HashMap<>(3);
    map.put("totalSpace", decimalFormat.format(totalSpace / (1024.0 * 1024 * 1024)));
    map.put("usableSpace", decimalFormat.format(usableSpace / (1024.0 * 1024 * 1024)));
    map.put("unallocatedSpace", decimalFormat.format(unallocatedSpace / (1024.0 * 1024 * 1024)));
    return map;
}

到了这里,关于Java代码中对文件的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jar命令:linux中对jar文件的操作

    在 Linux 中,您可以使用 jar 命令来对 jar 文件中的文件进行编辑。jar 命令是 Java Development Kit (JDK) 中的一部分,用于创建、查看和修改 jar 文件。 先看一下jar自带的帮助文档 linux中,替换jar包中的文件,可以减少重新打包上传的时间,尤其是网速不好的时候。 根据文件名,查

    2024年02月10日
    浏览(48)
  • C语言中对字节和字的位的常规操作汇总及示例

    /* 函数说明: UINT16 value  要操作的数据 UINT16 start  要取的操作数据中的开始字节位 UINT16 end    要取的操作数据中的结束字节位 使用示例:     UINT16 t = 0x36; //0011 0110     UI16BIT res = Proget_16bits(t,4,5);     qDebug() \\\"res = \\\" res;     res = Proget_16bits(t,4,5);     qDebug() \\\"res = \\\" res; */ UI

    2024年02月11日
    浏览(34)
  • Java中对日期的处理

    Java中对日期的处理   这个案例主要掌握:      1.怎么获取系统当前时间      2.String--Date      3.Date--String Import java.text.SimpleDateFormat; Import java.util.Date;  public class DateTest01{    public static void main(String[] args) throws Exception{       //获取系统当前时间(精确到毫秒的系统当前

    2024年01月20日
    浏览(24)
  • 在Java中对XML的简单应用

    1.1 什么是 XML XML 指可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准 1.2 XML 与 HTML 的主要差异 XML 不是

    2024年02月13日
    浏览(32)
  • Java,SpringBoot中对Stream流的运用

    详细参考:java 1.8 stream 应用-22种案例_java1.8 流案例-CSDN博客 1. 遍历  2. 汇总

    2024年02月22日
    浏览(36)
  • java中对Map中的key顺序排序

    1.使用List的默认方法 sort 或者 Collections.sort 进行排序这种方法需要对map的key进行转换 2.使用TreeMap的特性进行排序 2.1.在TreeMap基础上自定义排序方法 原文链接:https://blog.csdn.net/zixuexiaobaihu/article/details/109850832

    2024年02月09日
    浏览(25)
  • 【当学C语言 或者 java 或者 python时 是不是IO文件操作部分很难学懂?这三道例题帮你理解IO】【IO三道例题】

    示例1 示例2 示例3 注意:我们现在的方案性能较差,所以尽量不要在太复杂的目录下或者大文件下实验

    2024年02月16日
    浏览(41)
  • JAVA中对list使用stream对某个字段求和

    对于List对象 或者ListMapString,integer等类型的数组,如何快速的求出list数组中某个对象的某个属性的和,平均数,统计数,最大值,最小值,等: 使用 XXXSummaryStatistics统计类实现: 运行结果如下: 相应的还有DoubleSummaryStatistics, LongSummaryStatistics

    2024年02月14日
    浏览(29)
  • 【微信开发】小程序this.setData({})中对普通字段、数组以及数组对象进行赋值,对数组对象进行操作

    前言:         之最近在开发一个系统的时候,this.setData总有时候会出问题,查了查资料,一下进行总结: 字段赋值; 数组静态赋值; 数组动态赋值; 对象数组动态赋值; 组对象进行操作         ① 末位加数据;         ② 中间或者开头加数据;         ③ 删除

    2024年02月08日
    浏览(33)
  • C语言图形界面开发(演示视频、完整代码文件)

    C语言初学者开始都是在黑白控制台上开发一些小程序,实现一些小功能,因为基础的C语言可视化效果比较差,所展示的都是黑白的字符和数字,比较单调乏味。一些大学的计算机类专业学生,大一学习C语言,学习基础语法和算法,通过平台刷题提高自己编程能力,一般不专

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包