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