2017-02-07 2 views
1

J'ai un fichier png dans un dossier "Movies" sur la carte SD. Je veux copier et renommer ce fichier dans le même dossier. Je suis confus sur la façon d'appeler correctement la méthode SaveImage.Copier le fichier png existant et le renommer par programme

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanningResult != null) { 
     isbn = scanningResult.getContents(); 
     SaveImage(); 
    } 
    else{ 
     Toast toast = Toast.makeText(getApplicationContext(), 
       "No scan data received!", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 


private void SaveImage(Bitmap finalBitmap){ 
    String root = Environment.getExternalStorageDirectory().toString(); 
    File myDir = new File(root + "/Movies/"); 
    String fname = "Image-"+ isbn +".jpg"; 
    File file = new File (myDir, fname); 
    try { 
     FileOutputStream out = new FileOutputStream(file); 
     finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

La question peut ne pas être claire. Où voulez-vous copier cette image? – TruongHieu

+0

@TruongHieu Dans le même dossier. Je sais que je suis un noob. Je veux simplement dupliquer le même fichier et le renommer. – user2631279

+0

Isbn est un nom de fichier bitmap sans extension, non? – TruongHieu

Répondre

1

Donc, votre question est, comment appeler correctement votre méthode SaveImage(Bitmap finalBitmap), non? En tant que votre méthode SaveImage obtenir un bitmap en tant que paramètre, vous devez lui envoyer un bitmap en tant que paramètre.

Vous pouvez utiliser BitmapFactory pour créer un objet Bitmap à partir de votre fichier et envoyer cet objet Bitmap à votre méthode SaveImage:

String root = Environment.getExternalStorageDirectory().toString(); 
Bitmap bMap = BitmapFactory.decodeFile(root + "/Movies/myimage.png"); 
SaveImage(bMap); 
+0

Merci. C'est agréable d'avoir des réponses à mes questions stupides sans être humilié. – user2631279

+0

Mais vous humilier Rahul Sharma et TruongHieu. Ils donnent les seules bonnes réponses à votre question. Vous avez tout à fait tort de convertir un fichier .png en bitmap, puis de l'enregistrer en tant que jpg sous un autre nom. Si vous voulez copier un fichier, comme vous l'avez demandé, vous devez copier le fichier. Sans utiliser un bitmap. Et convertir .png en .jpg vous n'avez pas mentionné non plus mais accecpt est aussi la bonne réponse. Étrange. – greenapps

3

Je veux simplement dupliquer le même fichier et le renommer

Merci pour le rendre plus clairement. Vous pouvez l'utiliser pour copier le fichier source vers le fichier destination.

public void copy(File src, File dst) throws IOException { 
    InputStream in = new FileInputStream(src); 
    OutputStream out = new FileOutputStream(dst); 

    // Transfer bytes from in to out 
    byte[] buf = new byte[1024]; 
    int len; 
    while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
    } 
    in.close(); 
    out.close(); 
} 
+0

Ok. Donc dans les paramètres "Fichier src, Fichier dst". Comment puis-je faire ces variables. par exemple. src = "/movies/file.png" dst = "/movies/file2.png". J'essaie d'apprendre, mais c'est beaucoup de piste et d'erreur pour moi. – user2631279

+0

Non. Votre source et le fichier dest sont 'Environment.getExternalStorageDirectory(). ToString() +/Movies/file.png' et' Environment.getExternalStorageDirectory(). ToString() +/Movies/file2.png' – TruongHieu

+1

Merci pour votre temps. Je suis sûr que vous avez donné une réponse correcte, mais l'autre est tout ce dont j'avais besoin. Merci encore pour votre temps. – user2631279

1

Renommer le fichier:

File source =new File("abc.png"); 
File destination =new File("abcdef.png"); 
source.renameTo(destination); 

Copier fichier:

import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

Path source=Paths.get("abc.png"); 
Path destination=Paths.get("abcdef.png"); 
Files.copy(source, destination);