java - Android/Java - 当文件存在时,重命名文件

标签 java android file rename

我似乎无法理解我的逻辑,我正在尝试将文件重命名为“photo2.jpg”,如果“photo.jpg”和“photo1.jpg”存在,等等。

在我运行我的代码并拍照的那一刻,只有“photo.jpg”和“photo1.jpg”存在,然后如果拍摄了第三张和第四张等照片,它们就会被覆盖.

String photoName = "photo.jpg";
        String i = "0";
        int num = 0;

        File photo = new File(Environment.getExternalStorageDirectory(), photoName);

        //for (File file : photo.listFiles()){
        while(photo.exists()) {             
            //if(file.getName().equals("photo.jpg")){
                //photo.delete();
                num = Integer.parseInt(i);
                ++num;
                String concatenatedNum = Integer.toString(num);

                StringBuffer insertNum = new StringBuffer(photoName);
                insertNum.insert(5, concatenatedNum);

                photoName = insertNum.toString();

                photo.renameTo(new File(Environment.getExternalStorageDirectory(), photoName));
            //}
        }


        try {
            FileOutputStream fos=new FileOutputStream(photo.getPath());

            //MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle, yourDescription);

            //write jpeg to local drive
            fos.write(jpeg[0]);
            fos.close();
        }
        catch (java.io.IOException e) {}

感谢您的宝贵时间和帮助!


编辑: 解决了一半:我意识到我正在覆盖文件而不是创建新文件。现在我可以拍摄多张照片并将它们保存为自己的文件。但是,文件的命名现在是:

  • 照片.jpg
  • photo1.jpg
  • photo11.jpg
  • photo111.jpg等

最佳答案

您的文件名始终基于 i,但当您发现该数字被使用时,您永远不会更改 i 的值。

关于java - Android/Java - 当文件存在时,重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725499/

相关文章:

java - 遍历迭代器中的元素,然后调用方法?

java - 填充和排序列表 <?扩展条款与条件>

android - 在 ListView 之前滚动一个 View ,就像 Lollipop 手机应用程序一样

bash - 替换文本文件中的一行

c++ - 如何通过预处理文件来访问 O(1) 中文件中的一行?

php - 读取并解析超大文件的内容

java - DAO方法都返回NullPointerException

java - 在 Java 中使用递归反转字符串

java - 将空的 edittext 值设置为零

android - 为什么我的 BottomBar 位于屏幕中间?