我可以用下面的代码重现你的问题(对不起,VB)。它创建了55,000个零字节文件,名称为2000_0001.xml
到2010_5000.xml
。然后它会查找所有以2010开头的文件。在我的机器上(Windows 7 SP1 32位),它返回5,174个文件,而不是只有5,000个。
Option Explicit On
Option Strict On
Imports System.IO
Public Class Form1
Private TempFolder As String = Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "Temp")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CreateFiles()
Dim Files = Directory.EnumerateFiles(TempFolder, "2010*.xml", SearchOption.TopDirectoryOnly).ToList()
Using FS As New FileStream(Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "Report.txt"), FileMode.Create, FileAccess.Write, FileShare.Read)
Using SW As New StreamWriter(FS, System.Text.Encoding.ASCII)
For Each F In Files
SW.WriteLine(F)
Next
End Using
End Using
DeleteFiles()
End Sub
Private Sub CreateFiles()
If Not Directory.Exists(TempFolder) Then Directory.CreateDirectory(TempFolder)
Dim Bytes() As Byte = {}
Dim Name As String
For Y = 2000 To 2010
Trace.WriteLine(Y)
For I = 1 To 5000
Name = String.Format("{0}_{1}.xml", Y, I.ToString.PadLeft(4, "0"c))
File.WriteAllBytes(Path.Combine(TempFolder, Name), Bytes)
Next
Next
End Sub
Private Sub DeleteFiles()
Directory.Delete(TempFolder, True)
End Sub
End Class
你可以发布一些不匹配的文件名的例子吗? – cptScarlet 2011-03-10 15:52:05
你说“作为一个简单的例子” - 你是否测试过你显示的代码实际上会返回你声明的文件?这个问题更可能是由非简化的例子引起的......! – 2011-03-10 15:53:06
您提供的示例正常工作。刚刚测试过它。所以,如果你可以请张贴实际的代码不能正常工作 – Stecya 2011-03-10 15:56:48