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(file source, file destination) 此方法將檔案複製到新位置,同時保留檔案的時間戳記。它還將指定來源檔案的內容複製到指定的目標檔案。
如果目標檔案所在的目錄不存在,則建立該目錄。如果目標檔案存在,則此方法將覆寫它。
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();
}
}
}
您也可以透過使用
FileInputStream和
FileOuputStream編寫程式碼來複製 Java 中的文件,但如果您安裝了 Java 7,則不需要這樣做。Apache Commons IO FileUtils 類別也是一個方便的替代方案。對於高速檔案複製和傳輸,您還可以利用 java.nio 和
FileChannel類,但請注意 Windows 中存在一個錯誤,該錯誤會阻止您傳輸超過 64GB 的通道資料。
Java 中的字串
來源:
Dev.to 與其他程式語言一樣, Java 中的
字串是字元序列。但Java並沒有將字串實作為字元數組,而是將其視為完整的
String物件。
如何使用 new 關鍵字和文字建立字串對象
建立字串物件有兩種方法:使用 new 關鍵字或使用文字。文字表示是將其值表示為整數或字串。下面的程式碼顯示如何使用 new 關鍵字建立字串。
String a = new String();
眾所周知,new關鍵字用於創建該類別的實例。上面我們建立了一個沒有字元的「a」類型字串的實例。要建立一個包含值的字串,您可以這樣做。
char name[] = {'x','y','z'}
String a = new String(chars);
上面我們創建了一個字元數組
name[],其值為“x”、“y”、“z”,然後將這個完整的陣列賦給字串“a”。
我們使用String類別的建構子來初始化字串的值。正如我們在上面看到的,使用 new 關鍵字建立字串有點混亂且耗時。但有一個非常簡單的方法,這就是文字來拯救我們的地方。
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