Java'da Yüksek Performanslı Dosya Kopyalama

Yakın zamanda uğraştığım bir projede Java'da dosyadan dosyaya kopyalamaya işi yapmam gerekti ve internette biraz bakınmaya karar verdim. Genel olarak aşağıdaki gibi benim de klasik olarak düşünceğim şekilde işlemler vardı...



public static void copyFile(File source, File dest) throws IOException
{
if(!dest.exists())
{
dest.createNewFile();
}
InputStream in = null;
OutputStream out = null;
try
{
in = new new FileInputStream(source);
out = new FileOutputStream(dest);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0)
{
out.write(buf, 0, len);
}
}
finally
{
if(in != null)
{
in.close();
}
if(out != null)
{
out.close();
}
}
}


Ama bunda daha iyisi olmalı diye düşünmeye de bir yandan başladım. Bu sırada FileChannel isimli class la karşılaştım ve kullanılabileceğini düşündüm. Ve ortaya yukarıdakinden daha performanslı bir kod parçasını kullanabileceğimle ilgili bir kaynak çıktı. İşte ortaya çıkan kod parçacığı:



public static void copyFile(File sourceFile, File destFile) throws IOException
{
if(!destFile.exists())
{
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
try
{
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
destination.transferFrom(source, 0, source.size());
}
finally
{
if(source != null)
{
source.close();
}
if(destination != null)
{
destination.close();
}
}


Bu tip küçük kod kolaylıkları ile ilgi yazamaya devam edeceğim... Merakla bekleyiniz..


randomHero tarafından 10.05.2005 tarihinde yazılmıştır.

Labels: , ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home