2017-02-07 18 views
1

私はsdcardの "Movies"フォルダにpngファイルを持っています。そのファイルを同じフォルダにコピーして名前を変更したいと思います。私は、メソッドSaveImageを適切に呼び出す方法を混乱させる。既存のpngファイルをコピーしてプログラムで名前を変更

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

質問がクリアされないことがあります。そのイメージをどこにコピーしたいですか? – TruongHieu

+0

@TruongHieu同じフォルダにあります。私はノブだと分かっています。私は単に同じファイルを複製して名前を変更したいだけです。 – user2631279

+0

'isbn'は拡張子のないビットマップファイル名です、そうですか? – TruongHieu

答えて

1

あなたの質問は正しくSaveImage(Bitmap finalBitmap)メソッドを呼び出す方法ですか? SaveImageメソッドがBitmapをパラメータとして取得する場合、パラメータとしてBitmapを送信する必要があります。

あなたはあなたのファイルからBitmapオブジェクトを作成し、SaveImage方法に、このBitmapオブジェクトを送信するためにBitmapFactoryを使用することができます。

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

ありがとうございます。恥知らずの質問に屈辱を覚えることなく答えを出すのはいいことです。 – user2631279

+0

しかし、あなたはRahul SharmaとTruongHieuに屈辱を与えます。彼らはあなたの質問に唯一正しい答えを与えます。 .pngファイルをビットマップに変換し、別の名前でjpgとして保存するのは間違いです。あなたが尋ねたようにファイルをコピーしたい場合、ファイルをコピーする必要があります。ビットマップを使用しないでください。 .pngを.jpgに変換すると、どちらも言及していませんでしたが、accecptは正しい答えです。奇妙な。 – greenapps

3

私は単純に同じファイルを複製し、それをより明確にそれを作るための

感謝の名前を変更したいです。これを使用してsourceファイルから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

したがって、パラメータ "File src、File dst"にあります。どのように私はそれらの変数を作るのですか?例えば。 src = "/movies/file.png" dst = "/movies/file2.png"。私は勉強しようとしていますが、私のためにその道のりと誤りがたくさんあります。 – user2631279

+0

いいえ、あなたのソースとdestファイルは 'Environment.getExternalStorageDirectory()。toString()+/Movies/file.png'と' Environment.getExternalStorageDirectory()。toString()+/Movies/file2.png'です。 – TruongHieu

+1

ありがとう時間。私はあなたが正しい答えを与えたと確信していますが、もう一つは私が必要とするものです。あなたの時間をもう一度ありがとう。 – user2631279

1

名前の変更ファイル:

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

コピーファイル:

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); 
関連する問題