각각 하나의 디렉토리에 여러 개의 텍스트 파일이 들어있는 하위 디렉토리가 있습니다. 각각의 하위 디렉토리에는 하위 디렉토리와 동일한 이름을 가진 텍스트 파일이 들어 있습니다. 하위 디렉토리와 이름을 공유하는 파일을 제외하고이 파일의 내용을 다른 모든 텍스트 파일에 추가하려고합니다.이 파일을 java로 만들고 싶습니다.조건이있는 디렉토리의 여러 파일에 텍스트 추가 (Java)
예를 들어 파일 "b", "e", "f"및 "c"를 포함하는 하위 디렉토리 "b", "c" , "h"및 "d", "i", "j"를 포함하는 하위 디렉토리 "b", "c", "d" c + h, c + h, d, d + i, d + j 등의 파일을 삭제하고, 파일 "a", "b", "c"입니다.
fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf(".")).toLowerCase().equals(folder.getName().toLowerCase())
발생합니다 당신의 상태 :
는public class FileCopy {
public static void recursivelyCopyContent(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
recursivelyCopyContent(fileEntry);
} else if (fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf(".")).toLowerCase().equals(folder.getName().toLowerCase())) {
// just pass the folder and the file to the method that will do the actual content copy
copyContent(folder, fileEntry);
}
}
}
public static void copyContent(final File folder, final File fileName) {
try {
// get the byte[] content of the source file
byte[] fileContent = Files.readAllBytes(fileName.toPath());
for (final File fileEntry : folder.listFiles()) {
// only select files with a different absolute path than the source one
if(fileEntry.isFile() && !fileEntry.getAbsolutePath().equals(fileName.getAbsolutePath())) {
// append contents from source to destination file
Files.write(fileEntry.toPath(), fileContent, StandardOpenOption.APPEND);
}
}
}catch (IOException e) {
e.getStackTrace();
}
}
public static void main(String[] args) {
final File folder = new File("/path-of-directory/");
FileCopy.recursivelyCopyContent(folder);
}
}
그냥 확장자가없는 파일에주의 :
final File folder = new File("/path-of-directory/");
public static void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else if (fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf(".")).toLowerCase().equals(folder.getName().toLowerCase()))
// found the file wich content has to be added to other files in the same directory. How to?
}
}
먼저 당신은 몇 가지 코드를 작성하려고하고 특정 문제가 발생하는 경우 우리와 함께 공유해야합니다 :이 경우
, 나는 다음과 같은 접근 방식을 제안한다. – aUserHimself최종 파일 폴더 = 새 파일 ("/ path-of-directory /"); 공공 정적 무효 listFilesForFolder (최종 파일 폴더) {에 대한 (최종 파일 fileEntry : folder.listFiles()) { (fileEntry.isDirectory()) { listFilesForFolder (fileEntry)의 경우; } else if (fileEntry.getName(). substring (0, fileEntry.getName(). lastIndexOf (".")). // 내용이 동일한 디렉토리의 다른 파일에 추가되어야하는 파일을 찾았습니다. 어떻게? } } – Kyle
답을 수정하여 위의 코드와 같은 추가 정보로 업데이트하고 형식을 지정하는 것을 잊지 마십시오. – aUserHimself