2013-04-30 54 views
4

有誰知道是否有可能讀取C#中的隨機訪問文件?讀取C#中的隨機訪問文件

我試圖複製在C#中的以下功能(從舊VB6應用程序) -

Open File For Random Shared As #100 Len = Len(Record) 
    Get #100, DM, Record 
Close #100 

Public DM As Long 
Public Record As DMrecord 

Public Type DMrecord 
column1 As Long 
column2 As Integer 
column3 As Integer 
column4 As Integer 
column5 As String * 4 
End Type 

編輯 -

我現在已經使用的VisualBasic DLL嘗試的建議之下和接收FileGetObject行上出現以下錯誤 -

「Microsoft.VisualBasic.FileSystem.FileGetObject(int,ref object,long)的最佳重載方法匹配有一些無效參數」

我使用的代碼 -

 public class Record 
    { 
     public int DMtype; 
     public long ecn; 


     public Record(int DMtype, long ecn) 
     { 
      this.DMtype = DMtype; 
      this.ecn = ecn; 
     } 

     public Record() 
     { 
     } 
    } 


string fileName = @"C:\RandomAccess.dat"; 
     string returnString = string.Empty; 
     int row = 1; 
     int maxRow = 1000; 

     Record aFileRecord = new Record(); 

     FileSystem.FileOpen(1, fileName, OpenMode.Random, OpenAccess.Read, OpenShare.LockRead); 

     while (row < maxRow) 
     { 
      //Get record 2 1st.>> 
      FileSystem.FileGetObject(1, aFileRecord, row); 
      returnString += aFileRecord.DMtype.ToString() + "$" + aFileRecord.ecn.ToString(); 
      row++; 
     } 

     FileSystem.FileClose(1); 

我已經嘗試設置「錄製」既是結構和類,並得到同樣的錯誤。

編輯22/08/13 - 我從來沒有得到的這條底線,結束了在VB6導出隨機訪問數據,以逗號分隔的文本文件,然後在消費SSIS的文件。

+3

您必須使用BinaryReader自己解釋數據。 [看到這裏開始](http://stackoverflow.com/questions/4429829/read-variable-sized-string-from-binary-file-vb6-vs-c)長期你可以閱讀'BinaryReader.ReadInt64( )',整數與'BinaryReader.ReadInt32()',你必須一次讀取一個字符串。按照我給出的鏈接中的描述閱讀它們。 – 2013-04-30 16:40:20

+0

說明:vb6 Long實際上是int32 – 2013-04-30 16:45:29

+0

哎呀,所以我應該說「Long你可以用'BinaryReader.ReadInt32()讀取」 – 2013-04-30 16:46:28

回答

1

僅有的引用添加到Microsoft.VisualBasic.dll並使用FileSystem.FileOpen指定Random開模,並且FileSystem.FileGetObject方法。這與VB6中的Open聲明和Get關鍵字的行爲相同。

+0

感謝您的建議,我現在來看看VisualBasic.dll。 – user1948635 2013-05-01 13:33:16

+0

嗯,不能完全得到這個工作。當我嘗試傳入一個結構的新實例(上面一行中的aFileRecord)時,FileSystem.FileGetObject(1,aFileRecord,1)行會引發錯誤。任何想法我做錯了什麼? – user1948635 2013-05-01 14:35:37

+0

只是要添加,錯誤是 - 「Microsoft.VisualBasic.FileSystem.FileGetObject(int,ref object,long)的最佳重載方法匹配有一些無效參數」 – user1948635 2013-05-01 14:55:48