Tôi có một thư mục với cấu trúc nàyJava sao chép một thư mục không bao gồm một số tập tin nội bộ
mainFolder
--Sub1
--File .scl
--File .awl
--Other files
--Sub2
--Files
--Sub3
--Sub4
Tôi muốn sao chép nó vào một vị trí khác nhưng tôi muốn các Sub3 để thể tránh được và (tùy thuộc từ tình hình) một số tập tin từ Sub1
Dưới đây là một chiết xuất từ những gì tôi đã làm cho đến nay:
FileUtils.copyDirectory(srcDir, dstDir, new FileFilter() {
public boolean accept(File pathname) {
// We don't want 'Sub3' folder to be imported
// + look at the settings to decide if some format needs to be
// excluded
String[] ignoreList= new String[]{
!Settings.getSiemensOptionAWL() ? ".awl":"uselessStringWilNeverBeFound",
!Settings.getSiemensOptionSCL() ? ".scl":"uselessStringWilNeverBeFound",
"Sub3"
};
return !(ignoreFile(pathname, ignoreList) && pathname
.isDirectory());
}
}, true);
public static boolean ignoreFile(File file, String[] ignoreList) {
for (final String ignoreStr : ignoreList)
if (file.getAbsolutePath().contains(ignoreStr))
return true;
return false;
}
Rõ ràng là các đường nối hoạt động. Nhưng tôi nghĩ là một giải pháp rất xấu xí ... Có ai biết cách nào tốt hơn không?
Tái bút: tất nhiên Settings.getSiemensOptionAWL() chỉ là chức năng boolean taht trở quyết định của tôi
Có thể dễ dàng sao chép toàn bộ thư mục sang vị trí mới, sau đó xóa các tệp (từ bản sao đó) không nên ở đó. Rõ ràng điều này sẽ không phù hợp nếu động cơ liên quan đến bảo mật hơn là chức năng cơ bản. –
Tôi hiểu ý của bạn là gì ... nhưng dù sao thì không phải người dùng nào có nguy cơ sao chép dữ liệu mà bạn không có những gì người dùng có.(thi không phải là trường hợp nhưng tôi muốn có một suolution sạch) :) – Stefano
thậm chí ... dường như đôi khi nó hoạt động nhưng đôi khi nó không ... có lẽ có chỉ là một cách tốt hơn để suy nghĩ tương tự! – Stefano