zoukankan      html  css  js  c++  java
  • Java实现文件重命名

    最近在做一个Android上面的一个文件管理器的apk,有文件名重命名和剪切的功能。


    一般的思路如下:

    重命名:先新建一个文件,复制原先的文件,读写文件,最后删除原先文件

    剪切:先复制原先的文件,删除原先文件

    以上方法是有bug的,如果磁盘的空间不够的话, 则会出现错误。同时Java的File类中提供重名和剪切的功能。哭,原先怎么没有发现呢。

    下面是Java Api中的方法介绍

    renameTo

    public boolean renameTo(File dest)
    重新命名此抽象路径名表示的文件。

    此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。

    参数:
    dest - 指定文件的新抽象路径名
    返回:
    当且仅当重命名成功时,返回 true;否则返回 false
    抛出:
    SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒绝对原路径名和新路径名进行写访问
    NullPointerException - 如果参数 destnull

    但是要注意目标文件dest那个目录必须要存储。


    但是还有个问题,我们公司使用的是mtk的解决方案,手机内部也有个默认存储空间,还支持扩展sdcard,如果file1剪切到file2,且file1和file2不是同一个sdcard里面的,那么就会操作失败,不知道是为什么,疑问疑问疑问,如果有人实现同样的功能需要注意下。


    遇到这样的情况,只能使用上面的笨方法了。不过在操作前需要检测可用空间,防止出现错误,这个是程序员的本分嘛。大笑


    如果复制或者是剪切的是目录,也就是文件夹的话,那么需要循环遍历了,循环的穿件文件夹了,反正挺复杂的,快哭了


  • 相关阅读:
    myshop-dubbo 版图床
    Dockerfile里执行RUN chown 不起作用?
    The currently defined JAVA_HOME (/usr/local/openjdk-11) refers to a location where java was found but jstack was not found
    随机森林
    K-mean和K-mean++
    机器学习之特征选择
    聚类---度量
    机器学习之降维方法
    机器学习之生成模型和判别模型
    EM相关两个算法 k-mean算法和混合高斯模型
  • 原文地址:https://www.cnblogs.com/liushuibufu/p/3253607.html
Copyright © 2011-2022 走看看