Birkaç senaryo, bir dosyayı Java’da kopyalamanızı gerektirir. Bir dosya yöneticisi için işlemleri otomatikleştirmek için basit bir komut dosyası oluşturuyor olabilirsiniz. Dosyalarla çalışan eksiksiz bir uygulama bile yazıyor olabilirsiniz.

Java'da Dosyaları Kopyalayabileceğiniz Farklı Yollar

Gereken performansınıza, basitliğe ve hatta kullandığınız Java sürümüne bağlı olarak bir dosyayı kopyalamanın birçok yolu vardır.

FileInputStream ve FileOutputStream Kullanarak Dosyaları Kopyalama

Bu yöntem, dosyadaki her bir veri baytını manuel olarak okuyarak ve onu yeni bir hedefe yazarak çalışır. Aşağıdaki Files.copy yönteminden farklı olarak, bu yöntemi Java 6 ve öncesi dahil olmak üzere tüm Java sürümleri için kullanabilirsiniz.

Bir kaynak dosyadan bayt okumak için FileInputStream sınıfını ve hedefe bayt yazmak için FileOutputStream sınıfını kullanır.

Bilgisayarınızda herhangi bir yerde “SimpleScript.java” adlı bir dosya oluşturun.

Dosyayı bir metin düzenleyicide veya IDE’de açın ve aşağıdaki temel kodu uygulamaya kopyalayın.

import java.io.IOException;

class SimpleScript {

  public static void main(String args[]) throws IOException {

    // Your code here

  }

}

Bu ek Giriş Akışı ve Çıkış Akışı sınıflarını, ilk import deyiminden hemen sonra, dosyanın üst kısmında içe aktarın.

import java.io.File;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

SimpleScript.java dosyanızla aynı klasörde “Copy-File-1.txt” adlı yeni bir dosya oluşturun. Dosyanın içine herhangi bir yazılı içerik ekleyin.

Aynı klasörde “Destination” adlı yeni bir dizin de oluşturun. Amaç, “Copy-File-1.txt” dosyasını yeni klasöre kopyalamaktır.

Sınıfın ana işlevi içinde, iki yeni dosya nesnesi oluşturmak için File sınıfını kullanın. Kopyalamak istediğiniz dosya olan kaynak ve dosyayı kopyalamak istediğiniz yer olan hedef. Hedef dosya yoksa, programınız yeni bir tane oluşturacaktır.

class SimpleScript {

  public static void main(String args[]) throws IOException {

    // 1st way to copy a file

    File source = new File(“Copy-File-1.txt”);

    File destination = new File(“Destination/Copy-File-1.txt”);

  }

}

Bundan sonra, bir InputStream ve OutputStream nesnesi oluşturun.

InputStream input = null;

OutputStream output = null;

Verileri bayt cinsinden okumak için giriş akışını ve verileri yeni konuma yazmak için çıkış akışını kullanın.

try {

  // Create FileInputStream and FileOutputStream objects

  input = new FileInputStream(source);

  output = new FileOutputStream(destination);

  byte[] buf = new byte[1024];

  int bytesRead;

  // Write bytes to the destination

  while ((bytesRead = input.read(buf)) > 0) {

    output.write(buf, 0, bytesRead);

  }

} catch (IOException e) {

  e.printStackTrace();

  System.out.println(“Could not copy the file to the destination: ” + destination.getPath() + “. Check if the folder or file already exists.”);

} finally {

  // Close the streams

  if (input != null) {

    input.close();

  }

  if (output != null) {

    output.close();

  }

}

System.out.println(“File copied”);

Komut dosyasını çalıştırmak için bir komut satırı açın. Windows Komut İstemi’nde veya Mac Terminal’de cd komutunu kullanarak Java dosyanızı sakladığınız klasöre gidin .

cd Desktop

Komut dosyasını derlemek için Java dosyasını kaydedin ve komut satırında Javac komutunu çalıştırın:

javac SimpleScript.java

Komut dosyasını çalıştırmak için Java komutunu kullanın:

java SimpleScript

Hatasız tek bir çıktı satırı görmelisiniz:

Komut dosyasını konsolda çalıştırmak için Java komutları

Kopyalanan dosyanızı görüntülemek için “Hedef” klasörünüze gidin.

Kopyalamadan sonra hedef dosyanın konumu

Programınızın orijinal dosyadan kopyaladığı içeriği görüntülemek için dosyayı açın.

Orijinal dosyadan kopyalanan içeriğe sahip metin dosyası

Files.copy Kullanarak Dosyaları Kopyalama

Java 7 veya sonraki sürümünü kullanıyorsanız Files.copy yöntemini kullanabilirsiniz. Bu yöntem genellikle daha basit bir uygulamadır. Java Dokümantasyonuna göre , işlev için birden çok aşırı yükleme vardır.

Örneğin, Files.copy yöntemi, dosyaları bir konumdan diğerine kopyalamak için bir giriş akışını da kullanabilir, ancak daha az kod kullanan bir yöntem aracılığıyla. Ayrıca Yolları kullanabilir veya yöntemin dosyanızı nasıl kopyalamasını istediğinizi kendiniz belirleyebilirsiniz.

SimpleScript.java dosyanızla aynı klasörde “Copy-File-2.txt” adlı yeni bir dosya oluşturun. Dosyanın içine herhangi bir yazılı içerik ekleyin.

Dosyanın en üstüne, “java.nio.file.Paths” ve “java.nio.file.Files” sınıfları için içe aktarmaları ekleyin.

import java.nio.file.Paths;

import java.nio.file.Files;

Kaynak dosya ve hedef için göreli dosya yolunu temsil eden iki dize ekleyin. Dosyayı hedefe kopyalama mantığını zaten işleyecek olan Files.copy yöntemini kullanın.

String copySource = “Copy-File-2.txt”;

String copyDestination = “Destination/Copy-File-2.txt”;

try {

  Files.copy(Paths.get(copySource), Paths.get(copyDestination));

} catch (Exception e) {

  System.out.println(“Could not copy the file to the destination: ” + copyDestination + “. Check if the folder or file already exists.”);

}

System.out.println(“2nd File copied”);

Komut dosyasını Javac ve Java komutlarını kullanarak çalıştırın.

Kopyalanan dosyanızı görüntülemek için “Hedef” klasörünüze gidin.

İkinci kopyalanan dosya

FileChannel.transferTo() Kullanarak Dosyaları Kopyalama

Java Documentation’a göre bu yöntem, dosyaları kopyalamanın potansiyel olarak daha hızlı bir yolu olabilir. Ancak bu, işlevi uygulama şeklinize bağlı olacaktır.

SimpleScript.java dosyanızla aynı klasörde “Copy-File-3.txt” adlı yeni bir dosya oluşturun. Bu dosyaya bazı örnek içerikler ekleyin.

SimpleScript.java’nın en üstünde, “java.nio.channels.FileChannel” sınıfını, io paketindeki dosyayla ilgili önceki üç ortak sınıfla birlikte içe aktarın.

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.nio.channels.FileChannel;

Kaynak ve hedef için dosya nesneleri oluşturun ve bunları bir Giriş Akışı ve bir Çıkış Akışı oluşturmak için kullanın.

File src = new File(“Copy-File-3.txt”);

File dst = new File(“Destination/Copy-File-3.txt”);

FileInputStream inStream = new FileInputStream(src);

FileOutputStream outStream = new FileOutputStream(dst);

Dosyayı hedefine kopyalamak için FileChannel sınıfından TransferTo yöntemini kullanın.

try {

  FileChannel inChannel = inStream.getChannel();

  FileChannel outChannel = outStream.getChannel();

  inChannel.transferTo(0, inChannel.size(), outChannel);

} catch (Exception e) {

  System.out.println(“Could not copy the file to the destination: ” + dst.getPath() + “. Check if the folder or file already exists.”);

} finally {

  // Close the streams

  inStream.close();

  outStream.close();

}

System.out.println(“3rd File copied”);

Komut dosyasını Javac ve Java komutlarını kullanarak çalıştırın.

Kopyalanan dosyanızı görüntülemek için “Hedef” klasörünüze gidin.

Üçüncü Kopyalanan Dosya

Java’da Dosyaları Kopyalamak Sadece Başlangıç

Java’da bir dosyayı kopyalamanın birçok yolu vardır. Üç olası yol, geleneksel akış yöntemini, Files.copy yöntemini veya transferTo yöntemini kullanmayı içerir.

Java kullanarak gerçekleştirebileceğiniz başka birçok dosya yöneticisi işlemi vardır. Bunlardan bazıları, dosyaları taşımayı, dosyaları silmeyi veya dosyaları sıkıştırmayı içerir. Dosya yöneticisinde belirli işlemleri otomatikleştirmeniz gerekip gerekmediğini öğrenmek için bunlar yararlı olabilir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir