screenshot saving as autogenerated file name

前端 未结 2 2096
难免孤独
难免孤独 2020-12-07 06:22

I made a button to take the screenshot and save into Pictures folder. I set it as being saved under the name capture.jpeg but I wanted it to be saved as such as cafe001.jpeg

2条回答
  •  悲哀的现实
    2020-12-07 07:14

    You basically have a couple of choices...

    You could...

    List all the files in the directory and simple increment the file count by 1 and use that...

    File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
        listFiles(new FileFilter() {
            public boolean accept(File pathname) {
                String name = pathname.getName();
                return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
            }
    });
    
    int fileCount = files.length();
    
    fos = new FileOutputStream(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + 
        "capture" + fileCount + ".jpeg");
    

    This, of course, doesn't take into account if a file with the same index exists...

    You could...

    List all the files, sort them, grab the last one, find it's index value and increment that...

    Something like...

    File[] files = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).
        listFiles(new FileFilter() {
            public boolean accept(File pathname) {
                String name = pathname.getName();
                return pathname.isFile() && name.toLowerCase().startsWith("capture") && name.toLowerCase().endsWith(".jpeg");
            }
    });
    
    Arrays.sort(files);
    File last = files[files.length - 1];
    
    Pattern pattern = Pattern.compile("[0-9]+");
    Matcher matcher = pattern.matcher(last.getName());
    
    int index = 1;
    if (matcher.find()) {
        String match = matcher.group();
        index = Integer.parseInt(match) + 1;
    }
    
    String fileName = "capture" + index + ".jpeg"
    

    You could...

    Simply create a loop and loop until you find an empty index position...for example see, Java autogenerate directories if exists

提交回复
热议问题