Java’da Bir Dosyayı ByteArray’e Çevirme

0
668

Bir dosyayı byte arraye çevirebilmek, onu SQLite veritabanına blob tipinde kaydedebiliriz demektir. Bu da bize boyutu düşük olan dosyaların hepsini aynı veritabanında tutma ve toplu şekilde yönetme imkanı sağlar.

Öncelikle bir dosyanın nasıl byte arraye çevrildiğine bakalım. Ben aşağıdaki örnekte sdcard kök dizininde bulunan “deneme.mp3” dosyasını çevirdim. Siz de kendi istediğiniz herhangi bir dosyayı uzantısı fark etmeksizin çevirebilirsiniz.

[java]
File file = new File("/mnt/sdcard/deneme.mp3");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int read;
try {
FileInputStream fis = new FileInputStream(file);
while ((read = fis.read(buffer)) != -1) {
baos.write(buffer, 0, read);
}
baos.flush();
} catch (IOException e) {
e.printStackTrace();
}
byte[] fileByteArray = baos.toByteArray();
[/java]

  • Öncelikle bir file oluşturuyoruz ve yol olarak çevirmek istediğimiz dosyanın yolunu veriyoruz.
  • Daha sonra bir ByteArrayOutputStream oluşturuyoruz.
  • Sonra bir byte array oluşturuyoruz.
  • Kayıt işlemi için integer bir değişken oluşturuyoruz.
  • Daha sonra bir FileInputStream oluşturup parametre olarak daha önce oluşturduğumuz dosya yolunu içeren file’ı veriyoruz ve while döngüsü içerisinde ByteArrayOutputStream’e yazıyoruz.
  • ByteArrayOutputStream’i flush ediyoruz. (Önbelleğini siliyoruz)
  • Son olarak bir byte array oluşturup çıkan sonucu ona aktarıyoruz.

Şimdi de byte arrayden dosya haline dönüştürme işlemine bakalım:

[java]
try {
FileOutputStream fileOuputStream = new FileOutputStream("/mnt/sdcard/cikti.mp3");
fileOuputStream.write(fileByteArray);
fileOuputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
[/java]

  • Öncelikle bir FileOutputStream oluşturuyoruz ve yol olarak çıktıyı kaydetmek istediğimiz yeri çıktının ismi ve uzantısıyla birlikte veriyoruz.
  • Daha sonra oluşturduğumuz FileOutputStream’e çevirmek istediğimiz byte arrayi “write” komutuyla yazıyoruz.
  • Son olarak FileOutputStream’in yer kaplamaması için “close” komutuyla kapatıyoruz.

Bir dosyayı byte arraye çevirme ve tekrar eski haline döndürme işlemleri bu kadar.
Verdiğiniz yola dosya yöneticisi yardımıyla gittiğinizde çıktının orada olduğunu görebilirsiniz.
Kodları yazdıktan sonra AndroidManifest.xml dosyanızın içinde aşağıdaki gibi EXTERNAL STORAGE READ ve WRITE izinlerini almayı unutmayın.

[java]
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
[/java]

Bu izinleri almazsanız sdcard’dan okuma ve sdcard’a yazma işlemlerini yapamazsınız.

Bir sonraki yazıda görüşmek dileğiyle, kendinize iyi davranın…

CEVAP VER

Please enter your comment!
Please enter your name here