使用SVN版本控制系统时的Java IO问题
我有一个Java程序,它提供了一个目录名,使用使用SVN版本控制系统时的Java IO问题,java,svn,Java,Svn,我有一个Java程序,它提供了一个目录名,使用dirName.listFiles()获取该目录中所有文件的列表,然后遍历每个文件,解析其中的信息 这些文件通常都是普通的文本文件,但我使用的是SVN,在我的dirName目录中似乎有一个名为.SVN的目录,这导致我的程序失败,因为.SVN是一个目录而不是文本文件 现在,我可以使用FileFilter对象实现过滤器,但我实际上只希望文本文件在最终程序中位于该目录中 我的问题是:有没有办法不使用文件过滤器来解决我的问题?我还认为我的程序忽略了我编写的其
dirName.listFiles()
获取该目录中所有文件的列表,然后遍历每个文件,解析其中的信息
这些文件通常都是普通的文本文件,但我使用的是SVN,在我的dirName
目录中似乎有一个名为.SVN
的目录,这导致我的程序失败,因为.SVN
是一个目录而不是文本文件
现在,我可以使用FileFilter
对象实现过滤器,但我实际上只希望文本文件在最终程序中位于该目录中
我的问题是:有没有办法不使用文件过滤器来解决我的问题?我还认为我的程序忽略了我编写的其他程序中的.svn
目录,所以我不确定为什么现在会出现这个问题
提前感谢。您可以对
listFiles()
返回的每个对象调用isDirectory()
。您可以对listFiles()
返回的每个对象调用isDirectory()
。两种可能的解决方案(至少):
FileFilter
或FileNameFilter
isFile()
FileFilter
或FileNameFilter
isFile()
看看这里:比起使用java进行文件和目录搜索,我更喜欢编写一个jni程序,并使用C的dirent.h和stat.h来区分文件。jni程序会快得多。与使用java进行文件和目录搜索相比,我更喜欢编写jni程序,并使用C的dirent.h和stat.h来区分文件。jni程序会快得多。许多版本控制系统(不仅仅是SVN)都会出现这个问题,因为其中一些系统的磁盘上有文件,可以帮助识别工作副本的来源(.SVN代表SVN,view.dat代表clearcase)。您确实应该实现一个文件过滤器来排除这些文件,或者使用commons io中的文件过滤器: 它是空安全的,所以如果您给它空输入,它只会为您返回一个svn过滤器。如果给它另一个IOFileFilter(FileFilter的子接口),它只返回一个在现有筛选器和svn筛选器之间执行AND的IOFileFilter
FileFilter svnFilter = FileFilterUtils.makeSvnAware(null);
许多版本控制系统(不仅仅是SVN)都会出现这个问题,因为其中一些系统的磁盘上有文件,可以帮助识别工作副本的来源(.SVN代表SVN,view.dat代表clearcase)。您确实应该实现一个文件过滤器来排除这些文件,或者使用commons io中的文件过滤器: 它是空安全的,所以如果您给它空输入,它只会为您返回一个svn过滤器。如果给它另一个IOFileFilter(FileFilter的子接口),它只返回一个在现有筛选器和svn筛选器之间执行AND的IOFileFilter
FileFilter svnFilter = FileFilterUtils.makeSvnAware(null);
如果
dirName
不是工作副本的根目录,则可以升级到svn的最新版本。不是每个目录都有一个.svn目录,而只是根目录。如果dirName
不是工作副本的根目录,您可以升级到最新版本的svn。这并不是每个目录都有一个.svn目录,而只是根目录。我真的不明白这个问题。您希望能够过滤目录列表,但不使用文件过滤器
?@Oli-我觉得SVN的工作方式不应该以这种方式干扰我的程序。但基本上我意识到我应该使用一个文件过滤器。如果.svn
目录正在执行此操作,那么我的程序显然一点也不健壮。谢谢你的回复。我不太明白这个问题。您希望能够过滤目录列表,但不使用文件过滤器
?@Oli-我觉得SVN的工作方式不应该以这种方式干扰我的程序。但基本上我意识到我应该使用一个文件过滤器。如果.svn
目录正在执行此操作,那么我的程序显然一点也不健壮。谢谢你的回复。