JavaRush /Java 博客 /Random-ZH /喝咖啡休息#99。如何在 Java 中将文件从一个目录复制到另一个目录。Java 中的字符串

喝咖啡休息#99。如何在 Java 中将文件从一个目录复制到另一个目录。Java 中的字符串

已在 Random-ZH 群组中发布

Java中如何将文件从一个目录复制到另一个目录

来源:DZone 我已经用 Java 编程很长时间了,你不会相信,但在 Java 7 之前,Java API 中没有复制文件的方法。我们唯一的选择是自己编写它,使用 FileInputStream、FileOutputStream 和缓冲区将字节从一个流复制到另一个流;或者更好的是,使用FileChannel.transferTo()方法或 Apache Commons FileUtils,它们在当时是救星,至今仍然存在。 喝咖啡休息#99。 如何在 Java 中将文件从一个目录复制到另一个目录。 Java 中的字符串 - 1JDK 现在已经发展起来,已经有一个不错的 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;



/**

* Java program to copy a file from one directory to another e.g. from src to dest

*

* @author Javin

*/

public class FileCopyDemo {



public static void main(String args[]) {



// Using Apache Commons FileUtils class

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;



/**

* Java program to copy a file from one directory to another like from src to dest

*

* @author Javin Paul

*/

public class Testing {



public static void main(String args[]) {



// Using Apache Commons FileUtils class

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.*;



/**

* Java program to copy file using Java 7 Files.copy() method

*

* @author Javin Paul

*/

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) {

// TODO Auto-generated catch block

e.printStackTrace();

}



}



}
您还可以通过使用FileInputStreamFileOuputStream编写代码来复制 Java 中的文件,但如果您安装了 Java 7,则不需要这样做。Apache Commons IO FileUtils 类也是一个方便的替代方案。对于高速文件复制和传输,您还可以利用 java.nio 和FileChannel类,但请注意 Windows 中存在一个错误,该错误会阻止您传输超过 64GB 的通道数据。

Java 中的字符串

来源:Dev.to 与其他编程语言一样, Java 中的字符串是字符序列。但Java并没有将字符串实现为字符数组,而是将其视为一个完整的String对象。 喝咖啡休息#99。 如何在 Java 中将文件从一个目录复制到另一个目录。 Java 中的字符串 - 2

如何使用 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"); // Using new keyword
        String s2 = "Hello World using literals";

        System.out.println(s1);
        System.out.println(s2);
}
}
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION