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 tam gelişmiş bir uygulama bile yazıyor olabilirsiniz.
Gerekli performansa, basitliğe ve hatta hangi Java sürümünü kullandığınıza 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 yeni bir hedefe yazarak çalışır. Aşağıdaki Files.copy yönteminden farklı olarak, bu yöntemi Java 6 ve önceki sürümler dahil 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ızın herhangi bir yerinde "SimpleScript.java" adında bir dosya oluşturun.
- Dosyayı bir metin düzenleyicide veya IDE'de açın ve aşağıdaki temel kodu uygulamaya kopyalayın.
içe aktarmak java.io. IOİstisna;
sınıfSimpleScript{
halka açıkstatikgeçersizana(Dize argümanları[])atar IOException {
// Kodunuz burada
}
} - Bu ek Giriş Akışı ve Çıkış Akışı sınıflarını, ilk içe aktarma ifadesinden hemen sonra dosyanın en üstünde içe aktarın.
içe aktarmak java.io. Dosya;
içe aktarmak java.io. Giriş Akışı;
içe aktarmak java.io. Çıktı Akışı;
içe aktarmak java.io. FileInputStream;
içe aktarmak 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 ayrıca "Hedef" adlı yeni bir dizin 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 olacak kaynak ve dosyayı kopyalamak istediğiniz yer olan hedef. Hedef dosya yoksa, programınız yeni bir tane oluşturacaktır.
sınıfSimpleScript{
halka açıkstatikgeçersizana(Dize argümanları[])atar IOException {
// Bir dosyayı kopyalamanın 1. yolu
Dosya kaynağı = yeni Dosya("Kopyala-Dosya-1.Txt");
Dosya hedefi = yeni File("Hedef/Kopya-Dosya-1.Txt");
}
} - Bundan sonra, bir InputStream ve OutputStream nesnesi oluşturun.
InputStream girişi = hükümsüz;
ÇıktıAkımı çıktısı = hükümsüz; - Verileri bayt cinsinden okumak için giriş akışını ve verileri yeni konuma yazmak için çıkış akışını kullanın.
denemek {
// FileInputStream ve FileOutputStream nesneleri oluşturun
girdi = yeni FileInputStream (kaynak);
çıktı = yeni FileOutputStream (hedef);
bayt[] tampon = yenibayt[1024];
int baytOkuma;// hedefe bayt yaz
süre ((bytesRead = input.read (tampon)) > 0) {
output.write (tampon, 0, bytesRead);
}
} tutmak (IOİstisna e) {
e.printStackTrace();
System.out.println("Dosya hedefe kopyalanamadı: " + target.getPath() + ". Kontrol eğer klasör veya dosya zaten var.");
} en sonunda {
// Akışları kapat
eğer (giriş != hükümsüz) {
girdi.kapat();
}eğer (çıktı != hükümsüz) {
çıktı.kapat();
}
}System.out.println("Dosya kopyalandı");
- Komut dosyasını çalıştırmak için bir komut satırı açın. Java dosyanızı depoladığınız klasöre cd komutunu kullanarak gidin. Windows Komut İstemi veya Mac Terminali.
CD masaüstü
- Komut dosyasını derlemek için Java dosyasını kaydedin ve Javac komut satırında komut:
javac SimpleScript.java
- Komut dosyasını çalıştırmak için Java emretmek:
Hatasız tek bir çıktı satırı görmelisiniz:java SimpleScript
- Kopyalanan dosyanızı görüntülemek için "Hedef" klasörünüze gidin.
- Programınızın orijinal dosyadan kopyaladığı içeriği görüntülemek için dosyayı açın.
Files.copy Kullanarak Dosyaları Kopyalama
Java 7 veya sonraki bir sürümünü kullanıyorsanız, Files.copy yöntemini kullanabilirsiniz. Bu yöntem genellikle daha basit bir uygulamadır. Göre Java Belgeleri, işlev için birden fazla aşırı yükleme var.
Örneğin, Files.copy yöntemi, dosyaları bir konumdan diğerine kopyalamak için, ancak daha az kod kullanan bir yöntemle bir giriş akışı da kullanabilir. 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. Yollar" ve "java.nio.file. Dosyalar" sınıfları.
içe aktarmak java.nio.dosyası. Yollar;
içe aktarmak java.nio.dosyası. Dosyalar; - Kaynak dosya ve hedef için göreli dosya yolunu temsil eden iki dize ekleyin. Dosyayı hedefe kopyalamak için zaten mantığı işleyecek olan Files.copy yöntemini kullanın.
String copySource = "Kopyala-Dosya-2.Txt";
String copyDestination = "Hedef/Kopya-Dosya-2.Txt";denemek {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} tutmak (İstisna e) {
System.out.println("Dosya hedefe kopyalanamadı: " + copyDestination + ". Kontrol eğer klasör veya dosya zaten var.");
}
System.out.println("2nd Dosya kopyalandı"); - Javac ve Java komutlarını kullanarak betiği çalıştırın.
- Kopyalanan dosyanızı görüntülemek için "Hedef" klasörünüze gidin.
FileChannel.transferTo() Kullanarak Dosyaları Kopyalama
Göre Java Belgeleri, 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çerik ekleyin.
- SimpleScript.java'nın en üstünde, "java.nio.channels.js" dosyasını içe aktarın. FileChannel" sınıfı, io paketindeki önceki yaygın dosya ile ilgili sınıflardan üçünün yanında.
içe aktarmak java.io. Dosya;
içe aktarmak java.io. FileInputStream;
içe aktarmak java.io. FileOutputStream;
içe aktarmak java.nio.channels. Dosya Kanalı; - Kaynak ve hedef için dosya nesneleri oluşturun ve bunları bir Giriş Akışı ve Çıkış Akışı oluşturmak için kullanın.
Dosya kaynağı = yeni Dosya("Kopyala-Dosya-3.Txt");
Dosya dst = yeni File("Hedef/Kopya-Dosya-3.Txt");
FileInputStream inStream = yeni FileInputStream (src);
FileOutputStream outStream = yeni FileOutputStream (dst); - Dosyayı hedefine kopyalamak için FileChannel sınıfından TransferTo yöntemini kullanın.
denemek {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} tutmak (İstisna e) {
System.out.println("Dosya hedefe kopyalanamadı: " + dst.getPath() + ". Kontrol eğer klasör veya dosya zaten var.");
} en sonunda {
// Akışları kapat
inStream.close();
outStream.close();
}
System.out.println("3rd Dosya kopyalandı"); - Javac ve Java komutlarını kullanarak betiği çalıştırın.
- Kopyalanan dosyanızı görüntülemek için "Hedef" klasörünüze gidin.
Java'da Dosya Kopyalamak Sadece Başlangıçtır
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. Bunlar, dosya yöneticisinde belirli işlemleri otomatikleştirmeniz gerekip gerekmediğini öğrenmek için faydalı olabilir.