我在这里查看了类似的问题,但我尝试过的答案都没有被证明是有用的。我正在尝试加载网络上存在的目录。当我导航到程序生成的路径时,它绝对是一个目录。但是,当我尝试isDirectory
在表示路径的文件对象上使用时,它不起作用。
我生成文件的片段
if (sport == null || sport.trim().length() == 0) {
return null;
}
File dayDirectory = new File(aggregatorRootDirectory, new SimpleDateFormat("yyyy-MM-dd").format(date));
String sportDirectory = sport.replace(",", "");
return new File(dayDirectory + "\\" + sportDirectory + "\\");
这生成的路径是有效的,并且绝对是一个目录。该目录是一个网站链接,如果这有很大的不同?
我使用文件的片段
try {
if (directory == null || !directory.getCanonicalFile().isDirectory() ||
fileNamePattern == null || fileNamePattern.trim().length() == 0) {
return null;
}
} catch (IOException e) {
e.printStackTrace();
}
File[] files = directory.listFiles();
这次尝试抛出了一条java.io.IOException
消息:
文件名、目录名或卷标语法不正确。
当if statement
我尝试调用getCanonicalFile()
.
当我删除getCanonicalFile()
方法调用时,它会false
在我调用isDirectory
.
如果我一起删除检查,则listFiles()
解析为null
,这让我认为还有更多内容。
Web 链接是否存在常见问题isDirectory
,或者有没有办法强制文件对象将路径解释为目录?
编辑
下面是执行所需功能的 Scala 代码。以下函数从在线目录中获取文件列表:
private def getFiles(directory: File, fileNamePattern: String): Seq[Elem] = {
if(directory == null || ! directory.isDirectory
|| fileNamePattern == null || fileNamePattern.trim.length == 0) {
return Nil
}
val filesList = directory.listFiles( new FilenameFilter {
override def accept(dir: File, name: String) = { name.matches(fileNamePattern)
} } )
val sortedFilesList = filesList.sortBy(_.lastModified)
val feedsList = mutable.ListBuffer[Elem]()
for(file <- sortedFilesList) {
try {
feedsList += XML.loadFile(file) % new UnprefixedAttribute("original-filePath", file.getCanonicalPath, Null)
}
catch {
case _ => // TODO log
}
}
feedsList
}
这个函数从所述目录创建了一个新的 File 对象。
private def getSportDirectory(sport: String, date: Date = new Date): File = {
if(sport == null || sport.trim.length == 0) {
return null;
}
val dayDirectory = new File(aggregatorRootDirectory, new SimpleDateFormat("yyyy-MM-dd").format(date))
val sportDirectory = sport.replace(",", "") // resolving sports like "HR,DG" to "HRDG". Not ideal but ...
new File(dayDirectory, sportDirectory)
}