Java를 사용하여 한 디렉토리에서 다른 디렉토리 (하위 디렉토리)로 파일을 복사하고 싶습니다. 텍스트 파일이있는 디렉토리 dir이 있습니다. dir의 처음 20 개 파일을 반복하고 dir 디렉토리의 다른 디렉토리로 복사하려고합니다.이 디렉토리는 반복 직전에 생성되었습니다. 코드에서review
(i 번째 텍스트 파일 또는 리뷰를 나타내는) 합니다 trainingDir
. 어떻게해야합니까? 그런 기능이없는 것 같습니다 (또는 찾을 수 없습니다). 감사합니다.
boolean success = false;
File[] reviews = dir.listFiles();
String trainingDir = dir.getAbsolutePath() + "/trainingData";
File trDir = new File(trainingDir);
success = trDir.mkdir();
for(int i = 1; i <= 20; i++) {
File review = reviews[i];
}
답변
지금은 문제를 해결해야합니다
File source = new File("H:\\work-temp\\file");
File dest = new File("H:\\work-temp\\file2");
try {
FileUtils.copyDirectory(source, dest);
} catch (IOException e) {
e.printStackTrace();
}
FileUtils
Apache Commons-IO의 클래스버전 1.2부터 사용 가능한 라이브러리의 .
우리가 직접 모든 유틸리티를 작성하는 대신 타사 도구를 사용하는 것이 더 좋습니다. 시간과 기타 귀중한 자원을 절약 할 수 있습니다.
답변
표준 API에는 아직 파일 복사 방법이 없습니다. 옵션은 다음과 같습니다.
- FileInputStream, FileOutputStream 및 버퍼를 사용하여 바이트를 한 바이트에서 다른 바이트로 복사하거나 더 나은 방법으로 FileChannel.transferTo ()를 사용하여 직접 작성하십시오.
- 사용자 Apache Commons의 FileUtils
- Java 7에서 NIO2 대기
답변
자바 7에서이 입니다 자바 파일을 복사 할 수있는 표준 방법 :
Files.copy.
고성능을 위해 O / S 기본 I / O와 통합됩니다.
Java로 파일을 복사하는 표준 간결한 방법 에 대한 A를 참조하십시오 . 사용법에 대한 자세한 설명.
답변
Java 팁의 아래 예 는 다소 간단합니다. 그 후 파일 시스템을 다루는 작업을 훨씬 더 우아하고 우아하게하기 위해 Groovy로 전환했습니다. 그러나 여기에 내가 과거에 사용한 Java 팁이 있습니다. 이를 방지하기 위해 필요한 강력한 예외 처리 기능이 없습니다.
public void copyDirectory(File sourceLocation , File targetLocation)
throws IOException {
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists()) {
targetLocation.mkdir();
}
String[] children = sourceLocation.list();
for (int i=0; i<children.length; i++) {
copyDirectory(new File(sourceLocation, children[i]),
new File(targetLocation, children[i]));
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
답변
파일을 복사하고 이동하지 않으려면 다음과 같이 코딩하면됩니다.
private static void copyFile(File sourceFile, File destFile)
throws IOException {
if (!sourceFile.exists()) {
return;
}
if (!destFile.exists()) {
destFile.createNewFile();
}
FileChannel source = null;
FileChannel destination = null;
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
if (destination != null && source != null) {
destination.transferFrom(source, 0, source.size());
}
if (source != null) {
source.close();
}
if (destination != null) {
destination.close();
}
}
답변
Spring Framework 에는 Apache Commons Lang과 같은 많은 유사한 util 클래스가 있습니다. 그래서org.springframework.util.FileSystemUtils
File src = new File("/home/user/src");
File dest = new File("/home/user/dest");
FileSystemUtils.copyRecursively(src, dest);
답변
아파치 커먼즈 Fileutils 가 편리합니다. 아래 활동을 할 수 있습니다.
-
한 디렉토리에서 다른 디렉토리로 파일 복사
사용하다
copyFileToDirectory(File srcFile, File destDir)
-
한 디렉토리에서 다른 디렉토리로 디렉토리 복사
사용하다
copyDirectory(File srcDir, File destDir)
-
한 파일의 내용을 다른 파일로 복사
사용하다
static void copyFile(File srcFile, File destFile)