วิธีคัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีใน Java
ที่มา:
DZone ฉันเขียนโปรแกรมใน Java มาเป็นเวลานานแล้วคุณจะไม่เชื่อเลย แต่ก่อน Java 7 ไม่มีวิธีการคัดลอกไฟล์ใน Java API ทางเลือกเดียวของเราคือเขียนมันเองโดยใช้ FileInputStream, FileOutputStream และบัฟเฟอร์เพื่อคัดลอกไบต์จากที่หนึ่งไปยังอีกที่หนึ่ง หรือดีกว่านั้นให้ใช้ เมธอด
FileChannel.transferTo()หรือ Apache Commons FileUtils ซึ่งเป็นเครื่องช่วยชีวิตในสมัยนั้นและยังคงมีอยู่ในปัจจุบัน
ขณะนี้ JDK ได้รับการพัฒนาและมี API ที่เหมาะสมสำหรับการคัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีหนึ่งแล้ว ในบทความนี้ ฉันจะแสดงให้คุณเห็นว่าเราคัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีก่อน Java 7 ได้อย่างไร รวมถึงวิธีการสมัยใหม่ที่ทำให้งานนี้ง่ายขึ้นมาก
1. การคัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีก่อน Java 7
การพึ่งพา: Apache Commons IO
1.1 FileUtils.copyFile(แหล่งไฟล์, ปลายทางของไฟล์) วิธีการนี้จะคัดลอกไฟล์ไปยังตำแหน่งใหม่โดยยังคงรักษาการประทับเวลาของไฟล์ไว้ นอกจากนี้ยังคัดลอกเนื้อหาของไฟล์ต้นทางที่ระบุไปยังไฟล์ปลายทางที่ระบุด้วย ไดเร็กทอรีที่มีไฟล์เป้าหมายจะถูกสร้างขึ้นหาก
ไม่มีอยู่ หากมีไฟล์เป้าหมายอยู่ วิธีการนี้จะเขียนทับไฟล์นั้น
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class FileCopyDemo {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destFile = new File("target/HelloWorld.class");
try {
FileUtils.copyFile(srcFile, destFile);
System.out.println("File successfully copied in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output:
System.out.println("File successfully copied in Java");
1.2 คัดลอกไฟล์ไปยังไดเร็กทอรีโดยยังคงรักษาการประทับเวลาไว้วิธีการนี้จะคัดลอกเนื้อหาของไฟล์ต้นฉบับที่ระบุไปยังไฟล์ที่มีชื่อเดียวกันในไดเร็กทอรีเป้าหมายที่ระบุ ไดเรกทอรีเป้าหมายจะถูกสร้างขึ้นหาก
ไม่มีอยู่ หากมีไฟล์เป้าหมายอยู่ วิธีการนี้จะเขียนทับไฟล์นั้น
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class Testing {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destDir = new File("target");
try {
FileUtils.copyFileToDirectory(srcFile, destDir);
System.out.println("File successfully copied to destination directory in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
File successfully copied to destination directory in Java
2. คัดลอกไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีโดยใช้ Java 7 NIO 2 API
Java
7มีวิธีมาตรฐานในการคัดลอกไฟล์:
Files.copy โดยผสานรวมกับ I/O O/S ดั้งเดิมเพื่อให้ประสิทธิภาพสูง
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import static java.nio.file.StandardCopyOption.*;
import static java.nio.file.LinkOption.*;
public class FileCopyDemo {
public static void main(String args[]) {
try {
Path bytes = Files.copy(
new Java.io.File("bin/HelloWorld.class").toPath(),
new java.io.File("target/HelloWorld.class").toPath(),
REPLACE_EXISTING,
COPY_ATTRIBUTES,
NOFOLLOW_LINKS);
System.out.println("File successfully copied using Java 7 way");
} catch (IOException e) {
e.printStackTrace();
}
}
}
คุณยังสามารถคัดลอกไฟล์ใน Java ได้ด้วยการเขียนโค้ดโดยใช้
FileInputStreamและ
FileOuputStreamแต่ไม่จำเป็นหากคุณติดตั้ง Java 7 ไว้ คลาส Apache Commons IO FileUtils ก็เป็นทางเลือกที่สะดวกเช่นกัน สำหรับการคัดลอกและถ่ายโอนไฟล์ความเร็วสูง คุณยังสามารถใช้ประโยชน์จากคลาส java.nio และ
FileChannelได้ แต่โปรดทราบว่ามีข้อบกพร่องใน Windows ที่ทำให้คุณไม่สามารถถ่ายโอนข้อมูลช่องสัญญาณมากกว่า 64GB
สตริงใน Java
ที่มา:
Dev.to เช่นเดียวกับภาษาการเขียนโปรแกรมอื่น
Stringใน Java นั้นเป็นลำดับของอักขระ แต่ Java ไม่ได้ใช้สตริงเป็นอาร์เรย์ของอักขระ แต่ถือว่ามันเป็นวัตถุ
String ที่สมบูรณ์
วิธีสร้างวัตถุสตริงโดยใช้คำสำคัญและตัวอักษรใหม่
มีสองวิธีในการสร้างออบเจ็กต์สตริง: การใช้คีย์เวิร์ดใหม่หรือการใช้ตัวอักษร การแสดงตัวอักษรหมายถึงการแสดงค่าเป็นจำนวนเต็มหรือสตริง โค้ดด้านล่างแสดงวิธีที่เราสามารถสร้างสตริงโดยใช้คีย์เวิร์ดใหม่
String a = new String();
อย่างที่เราทราบ คีย์เวิร์ดใหม่ถูกใช้เพื่อสร้างอินสแตนซ์ของคลาสนี้ ด้านบนนี้เราได้สร้างอินสแตนซ์ของสตริงประเภท "a" ที่ไม่มีอักขระ หากต้องการสร้างสตริงที่มีค่าอยู่ คุณสามารถทำได้ดังนี้
char name[] = {'x','y','z'}
String a = new String(chars);
ด้านบนนี้เราได้สร้างชื่ออาร์เรย์อักขระ
[ ]ด้วยค่า "x", "y", "z" จากนั้นจึงกำหนดอาร์เรย์ที่สมบูรณ์นี้ให้กับสตริง "a" เราใช้ตัวสร้างของ คลาส
Stringเพื่อเริ่มต้นค่าของสตริง ดังที่เราเห็นข้างต้น การสร้างสตริงโดยใช้คีย์เวิร์ดใหม่นั้นค่อนข้างน่าสับสนและใช้เวลานาน แต่มีวิธีที่ง่ายมาก และนี่คือจุดที่คนจริงๆ มาช่วยเหลือเรา
String s = "xyz";
นี่คือวิธีที่เราสร้างสตริงใน Java โดยใช้ตัวอักษร สำหรับทุกสตริงลิเทอรัลในโปรแกรม Java จะสร้างอ็อบเจ็กต์ String โดยอัตโนมัติพร้อมค่าเริ่มต้นที่มอบให้ คุณสามารถใช้สตริงลิเทอรัลได้ทุกที่ในโปรแกรมเพื่อสร้างออบเจ็กต์สตริงจากโปรแกรม
ตัวอย่างสตริง
นี่คือโค้ดสำหรับโปรแกรม Hello world ง่ายๆ ที่มีความยาวไม่กี่บรรทัด
public class HelloWorld {
public static void main(String args[]) {
String s1 = new String("Hello World using new keyword");
String s2 = "Hello World using literals";
System.out.println(s1);
System.out.println(s2);
}
}
GO TO FULL VERSION