1, VB.NET 读取 (通过streamReader)
- ' tmpCount = 0
- 'Dim tmpSR As New StreamReader(fileFullName,System.Text.Encoding.Default)
- 'Do While tmpSR.Peek >= 0
- ' tmpCount = tmpCount + 1
- 'Loop
- 'tmpSR.Close()
2,通过VB.NET程序调用cmd命令
调用方法:fileRecordCounts = GetTxtRowCount(file)
fileShortName = System.IO.Path.GetFileName(file) ' 取短路径名
fileCreationDate = System.IO.File.GetCreationTime(file).ToString("yyyy MM dd HH:mm") ‘取文件创建时间
fileSize = New System.IO.FileInfo(file).Length / 1024 ’取文件大小, fileSize 为 KB
- Private Function GetFileRowCount_Info(ByVal sFileFullName As String) As String
- If (Not File.Exists(sFileFullName)) Then Return ""
- Dim output As String = ""
- Try
- Dim myProcess As System.Diagnostics.Process = New System.Diagnostics.Process()
- myProcess.StartInfo.FileName = "cmd.exe"
- myProcess.StartInfo.UseShellExecute = False
- myProcess.StartInfo.RedirectStandardInput = True
- myProcess.StartInfo.RedirectStandardOutput = True
- myProcess.Start()
- Dim myStreamWriter As StreamWriter = myProcess.StandardInput
- myStreamWriter.WriteLine("find /V """" /C " + sFileFullName)
- myStreamWriter.Close()
- output = myProcess.StandardOutput.ReadToEnd()
- myProcess.WaitForExit()
- Catch ex As Exception
- Console.WriteLine(ex)
- Return ""
- End Try
- Return output
- End Function
- 'Dim result As Boolean = Int64.TryParse(value,number)
- ' If result Then
- ' Console.WriteLine("Converted '{0}' to {1}.",value,number)
- ' Else
- ' If value Is Nothing Then value = ""
- ' Console.WriteLine("Attempted conversion of '{0}' Failed.",value)
- ' End If
- Public Function GetTxtRowCount(ByVal sFileFullName As String) As Long
- If (Not File.Exists(sFileFullName)) Then Return -1
- Dim sResult As String = GetFileRowCount_Info(sFileFullName)
- If (sResult = "") Then Return -1
- Dim lResult As Long = 0
- Dim lines() As String = sResult.Split(CChar(vbCrLf))
- Dim sTmp As String = ""
- For Each s As String In lines
- sTmp = s.TrimEnd(CChar(vbCrLf)).ToUpper()
- If (sTmp = "") Then Continue For
- If (Not sTmp.Contains(".TXT")) Then Continue For
- If (Not sTmp.Contains("----------")) Then Continue For
- Long.TryParse(sTmp.Split(CChar(":"))(1).Trim(),lResult) ' 这里需要根据实际情况来
- Exit For
- Next
- Return lResult
- End Function
- 'Public Function GetTxtRowCount(ByVal sFileFullName As String) As Integer
- ' If (Not File.Exists(sFileFullName)) Then Return -1
- ' Dim sResult As String = GetFileRowCount_Info(sFileFullName)
- ' If (sResult = "") Then Return -1
- ' Dim lResult As Integer = 0
- ' Dim lines() As String = sResult.Split(System.Convert.tochar("\n"))
- ' Dim sTmp As String = ""
- ' For Each s As String In lines
- ' sTmp = s.TrimEnd(System.Convert.tochar("\r")).ToUpper()
- ' If (sTmp = "") Then Continue For
- ' If (Not sTmp.Contains(".TXT")) Then Continue For
- ' If (Not sTmp.StartsWith("----------")) Then Continue For
- ' Integer.TryParse(sTmp.Split(CChar(":"))(2).Trim(),lResult)
- ' Exit For
- ' Next
- ' Return lResult
- 'End Function
3, 通过C#程序调用cmd命令
调用方法: long iResult = Common.ConsoleCommand.GetTxtRowCount(sFileName);
- public static string GetFileRowCount_Info(string sFileFullName)
- {
- if (!File.Exists(sFileFullName)) return "";
- string output = "";
- try
- {
- System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
- myProcess.StartInfo.FileName = "cmd.exe";
- myProcess.StartInfo.UseShellExecute = false;
- myProcess.StartInfo.RedirectStandardInput = true;
- myProcess.StartInfo.RedirectStandardOutput = true;
- myProcess.Start();
- StreamWriter myStreamWriter = myProcess.StandardInput;
- //myStreamWriter.WriteLine(sFileFullName.Substring(0,sFileFullName.IndexOf(":") + 1));
- myStreamWriter.WriteLine("find /V \"\" /C " + @sFileFullName);
- myStreamWriter.Close();
- output = myProcess.StandardOutput.ReadToEnd();
- myProcess.WaitForExit();
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- return "";
- }
- return output;
- }
- public static long GetTxtRowCount(string sFileFullName)
- {
- if (!File.Exists(sFileFullName)) return -1;
- string sResult = GetFileRowCount_Info(sFileFullName);
- if (sResult == "")
- return -1;
- long lResult = 0;
- string[] lines = sResult.Split(System.Convert.tochar("\n"));
- string sTmp = "";
- foreach (string s in lines)
- {
- sTmp = s.TrimEnd(System.Convert.tochar("\r")).ToUpper();
- if (sTmp == "") continue;
- if (!sTmp.Contains(".TXT")) continue; // 不是.TXT的排除
- if (!sTmp.StartsWith("----------")) continue;
- long.TryParse(sTmp.Split(':')[2].Trim(),out lResult); // 这里需要根据实际情况来
- break;
- }
- return lResult;
- }
(结束)