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();
}
}
}
FileInputStreamと
FileOuputStream を使用してコードを記述して Java でファイルをコピーすることもできますが、Java 7 がインストールされている場合は必要ありません。Apache Commons IO FileUtils クラスも便利な代替手段です。高速ファイルのコピーと転送には、java.nio クラスと
FileChannelクラスを利用することもできますが、Windows には 64 GB を超えるチャネル データを転送できないバグがあることに注意してください。
Javaの文字列
出典:
Dev.to 他のプログラミング言語と同様、 Java の
Stringは一連の文字です。ただし、Java は文字列を文字の配列として実装せず、完全な
Stringオブジェクトとして扱います。
new キーワードとリテラルを使用して文字列オブジェクトを作成する方法
文字列オブジェクトを作成するには、new キーワードを使用する方法とリテラルを使用する方法の 2 つがあります。リテラル表現とは、その値を整数または文字列として表現することを意味します。以下のコードは、new キーワードを使用して文字列を作成する方法を示しています。
String a = new String();
ご存知のとおり、new キーワードはこのクラスのインスタンスを作成するために使用されます。上記では、文字を含まない「a」タイプの文字列のインスタンスを作成しました。値を含む文字列を作成するには、次のようにします。
char name[] = {'x','y','z'}
String a = new String(chars);
上記では、値「x」、「y」、「z」を含む 文字配列
name[ ]を作成し、この完全な配列を文字列「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