# Screenshot speichern ohne alte Datei überschreiben



## TheWalkingFrame (22. Apr 2021)

Ich möchte über einen Button einen Screenshot meiner Activity machen und diese als PNG in einem automatisch erstellten Ordner abspeichern.
Das funktioniert wunderbar. Das Problem ist, wenn ich erneut auf den Button klicke, überschreibt er den alten Screenshot mit dem neuen Screenshot in dem Ordner, anstatt eine neue Datei abzuspeichern.
Wie bringe ich es zusammen, dass er einfach z.b. den neuen Screenshot als Screenshot(1).png abspeichert, ohne dass er die 1. Datei Screenshot.png einfach überschreibt ?

```
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
   

        btnScreenshot = (Button) findViewById(R.id.btnScreenshot);                                    /

        String fileName = "Screenshot.png";


   
    btnScreenshot.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
        Bitmap bitmap = getScreenShot(rootView);
        createDirectory();
        store(bitmap, fileName);
        }
    });

    }//Close OnCreate

 



    //Get Screenshot of the Activity
    //
    public static Bitmap getScreenShot(View view) {
        View screenView = view.getRootView();
        screenView.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
        screenView.setDrawingCacheEnabled(false);
        return bitmap;
    }




    //Create Directory for Screenshot
    //
    public void createDirectory() {

        String screenshotdirectory = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Screenshot";
 
        File folderScreenshot = new File(screenshotdirectory);
            if (folderScreenshot.exists()) {
                Toast.makeText(this, "Folder already exist", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Creating Folder Screenshot", Toast.LENGTH_SHORT).show();
                folderScreenshot.mkdirs();
            }
    }

 
 
    //Store the Screenshot File in Screenshot Directory
    //
    public void store(Bitmap bm, String fileName) {

        String dirPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Screenshot;

        File file = new File(dirPath, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file, true);
            bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.flush();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(this, "Error!", Toast.LENGTH_SHORT).show();
        }
    }
```


----------



## Oneixee5 (22. Apr 2021)

Sorry falscher Thread


----------



## mihe7 (22. Apr 2021)

Irgendsowas

```
static File getNonExistingFile(String name, String suffix) {
    File base = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Screenshot");
    File file = new File(base, name + suffix);
    for (int no = 1; file.exists(); no++) {
        file = new File(base, String.format("%s(%d)%s", name, no, suffix));
    }
    return file;
}
```


----------



## TheWalkingFrame (25. Apr 2021)

Vielen Dank, klappt wunderbar !


----------

