在Android应用中替换并增加文件名中的数字

LKB*_*LKB 4 java android replace file increment

请参阅以下(两个)解决方案的答案.


我似乎无法使我的逻辑正确,并且由于某种原因,这确实让我,但它似乎(并且可能是)如此简单.我想要做的是捕获图像,如果存在,则增加图像.即photo1.jpg存在,因此将新文件保存为photo2.jpg等.

在我运行我的代码并拍摄照片的那一刻,"photo.jpg"被保存,然后在下一次拍摄时,"photo1.jpg"被保存,然后是"photo11.jpg",然后是"photo111.jpg "等

这是我的代码:

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

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

        while(photo.exists()) {             
            //photo.delete();
            num = Integer.parseInt(i);
            num++;
            String concatenatedNum = Integer.toString(num);
            StringBuffer insertNum = new StringBuffer(photoName);
            photoName = insertNum.replace(5, 5, concatenatedNum).toString();
                                //insert

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

        FileOutputStream fostream = null;

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

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

            //write jpeg to local drive
            fostream.write(jpeg[0]);
            fostream.close();
        }
        catch (IOException e) { e.printStackTrace(); }
        finally
        {
            if(fostream != null)
            {
                try
                {
                    fostream.flush();
                    fostream.close();
                }
                catch(IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢.

谢谢.


我已经实现了以下解决方案,现在无论我拍摄多少图像,我最终只会得到2个文件.'photo.jpg'和'photo1.jpg'已成功保存,但未保存其他图像.他们甚至没有被写下来.有帮助吗?

现在的代码如下:

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

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

        while(photo.exists()) {             
            //photo.delete();
            num = Integer.parseInt(i);
            num++;      
            photoName = "photo" + num + ".jpg";
            photo = new File(Environment.getExternalStorageDirectory(), photoName);
            //String concatenatedNum = Integer.toString(num);
            //StringBuffer insertNum = new StringBuffer(photoName); 

            //photoName = insertNum.insert(5, concatenatedNum).toString();

        }
Run Code Online (Sandbox Code Playgroud)

xag*_*gyg 7

while用这个替换你的循环:

   while(photo.exists()) {             
        num++;
        photoName = "photo"+num+".jpg";
        photo = new File(Environment.getExternalStorageDirectory(), photoName);
   }
Run Code Online (Sandbox Code Playgroud)