Java 排除特定目录和文件列表
我的代码用于复制所有目录和文件,但不确定如何排除Java 排除特定目录和文件列表,java,Java,我的代码用于复制所有目录和文件,但不确定如何排除 “音乐”下的特定目录,并排除文件列表 1) 例如,我有音乐文件夹和许多子目录。想排除西班牙语吗 子目录,并将“音乐”文件夹下的所有内容复制到目标 The second condition which I wanted to check is 2) 在“音乐文件夹”下,我想排除所有文本文件并进行复制 ` private void copyFiles(File src, File tgt) throws IOException
“音乐”下的特定目录,并排除文件列表 1) 例如,我有音乐文件夹和许多子目录。想排除西班牙语吗 子目录,并将“音乐”文件夹下的所有内容复制到目标
The second condition which I wanted to check is
2) 在“音乐文件夹”下,我想排除所有文本文件并进行复制
` private void copyFiles(File src, File tgt) throws IOException
{
if(src.isDirectory())
{
try{
if(!tgt.exists()) tgt.mkdirs();
String[] filePaths = src.list();
for(String filePath : filePaths)
{
File srcFile = new File(src, filePath);
File destFile = new File(tgt, filePath);
copyFiles(srcFile, destFile);
}
}
catch(Exception ie)
{
ie.printStackTrace();
}
}
else
{
try
{
bis = new BufferedInputStream(new FileInputStream(src));
bos = new BufferedOutputStream(new FileOutputStream(tgt));
long fileBytes = src.length();
long soFar = 0;
int Byte;
while((Byte = bis.read()) != -1)
{
bos.write(Byte);
}
bis.close();
bos.close();
}
catch(Exception excep)
{
excep.printStackTrace();
bos.flush();
bis.close();
bos.close();
}`
采用可用于确定某些文件是否应包含在列表returne byFile#listFiles
如果您事先知道要包括/排除的内容,这是可以的。如果您想使流程更加动态,可以将FileFilter
的列表传递给copy
方法,然后使用特殊的FileFilter
对其进行迭代
private void copyFiles(File src, File tgt, FileFilter... filters) {
/*...*/
File[] filePaths = src.listFiles(new GroupedFileFiler(filters));
/*...*/
}
public class GroupedFileFilter implements FileFilter {
private FileFilter[] filters;
public GroupedFileFilter(FileFilter... filters) {
this.filters = filters;
}
@Override
public boolean accept(File pathname) {
boolean include = true;
if (filters != null && filters.length > 0) {
for (FileFilter filter : filters) {
include = filter.accept(pathname);
if (!include) {
break;
}
}
}
return include;
}
}
你可以看看哪一个物体。现在已经有了一种方法,可以减少自己动手的需要,尤其是逐字节的,速度可能非常慢。这不是总是会返回真的吗?如果只在if语句中返回false,在结尾返回true,那么实际上根本不需要该布尔变量。@sbat-如果所有筛选器都返回true,则只返回true,但如果不提供任何筛选器,则返回true。我是老派。我相信我所有的方法都有一个入口和一个出口。很容易错过隐藏在复合
if
和loop
code中的return语句-但这只是我。。。