using vb.net read unix style text file

Unix text file uses linefeed only to indicate end of line, the .net streamreader's readline function is not working with unix text file.

I made a small wrapper for StreamReader class to make it is working with unix format.

At first, I created a class

ExpandedBlockStart.gif代码

Imports  System.IO

Public   Class  StreamReaderUnix
    
Inherits  streamreader
    
Sub   New ( ByVal  filename  As   String )
        
MyBase .New(filename)
    
End Sub

    
Public   Function  ReadLine( ByVal  unixStyle  As   String As   String
        
Dim  intByte  As   Integer
        
Dim  bteRead()  As   Byte

        
Dim  mybuffer( 1 As   Char
        
Dim  lineFeedLocation  As   Integer
        
Dim  aLine  As   String   =   String .Empty 

        
If  unixStyle  =   ""   Then
            
MyBase .ReadLine()
        
Else  
            
Do   While   Not  intByte  =   - 1
                intByte 
=   MyBase .Read(mybuffer,  0 1 )
                
If  intByte  <>   - 1   Then
                    lineFeedLocation 
=  Array.IndexOf(mybuffer,  CChar (vbLf))
                    
If  mybuffer( 0 =   CChar (vbLf)  Then
                        
Return  aLine
                    
ElseIf  mybuffer( 0 =   CChar (vbCr)  Then
                        
' doing nothing
                     Else
                        aLine 
=  aLine  &  mybuffer( 0 )
                    
End   If
                
End   If
            
Loop
        
End   If  
    
End Function
End Class

 

 

Below is the sample code to use this class

 

Dim  oRead  As  StreamReaderUnix
oRead 
=   New  StreamReaderUnix( " sample.txt " )
Dim  lineIn  As   String
While  oRead.Peek  <>   - 1
   lineIn 
=  oRead.ReadLine( " unix " )
   
MsgBox (lineIn)
End   While

 

 

转载于:https://www.cnblogs.com/yangbin990/archive/2010/03/22/1691499.html

你可能感兴趣的:(using vb.net read unix style text file)