【问题标题】:.NET Dir$ Function on Network Path网络路径上的 .NET Dir$ 函数
【发布时间】:2014-05-31 13:20:26
【问题描述】:

我有一个包含数十万个 .wav 文件的网络路径。当我执行以下操作时:

FileBuffer = Dir$("\\MEDIASERVER\*.wav", FileAttribute.Archive)

线路永远冻结。我真的让它运行​​了一天,它永远不会随着执行而返回。然后我决定在 DOS 中使用 dir 命令测试症状。相同的症状。

然后我想知道如果我在搜索模式中添加一个前缀来缩小我的结果,我是否会得到相同的症状。我在 DOS 中这样做了:

DIR 0009*.wav

工作就像一个魅力。因此,有了这些知识,我回到了我的 VB.NET 项目并应用了类似的解决方案:

FileBuffer = Dir$("\\MEDIASERVER\0009*.wav", FileAttribute.Archive)

不会卡住,实际上会进行搜索。但我对第一个结果感到惊讶:

FileBuffer 返回以下值:

003925034541228334146804222014065036AM005020MIF.wav

这与我要求的模式不符。有人可以告诉我我做错了什么吗? DIR$ 是否存在已知错误?有没有办法在不枚举网络共享中 100% 的文件的情况下实现我想要的?

相关的附加信息: 开发机器:Windows 7 Pro,VS 2013 Pro 网络服务器:Linux Centos 5.0(运行 Windows 7 Pro 的网络驱动器也有同样的问题)。

提前致谢。

【问题讨论】:

  • 它们是隐藏文件吗?
  • DIR \\MEDIASERVER\0009*.wav 在 DOS 下工作吗?
  • 该命令在 DOS 下工作。实际上,我在 DOS 中得到的反馈与在 .NET 项目中得到的反馈相同。它们是普通文件。他们没什么特别的。

标签: vb.net


【解决方案1】:

很抱歉刚刚发布了这个问题,并且已经得到了答案。关于它是否在 DOS 中正常工作的问题帮助缩小了我的故障排除范围。我在网上看到了几页,说 DIR 会带来意想不到的结果。他们说这是因为 8.3 命名约定。然后我决定看看是否有任何其他限制可以添加到我的程序中。我将模式更改为:

DIR \\MEDIASERVER\0009*MIF.wav

现在我得到了预期的结果。这不可能是因为 8.3 命名约定。这是另一回事,但至少我得到了这个工作。

感谢您的宝贵时间。

【讨论】:

  • 为什么要使用目录?使用 For Each 循环,使用 DirectoryInfoFileInfo 类。
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多