Кто-нибудь знает, можно ли читать файлы с произвольным доступом на С#?
Я пытаюсь воспроизвести следующую функцию (из старого приложения 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
ИЗМЕНИТЬ –
Теперь я попытался использовать DLL VisualBasic, как предложено ниже, и получил следующую ошибку в строке 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.
BinaryReader.ReadInt64()
, Integer сBinaryReader.ReadInt32()
и строки, которые вам придется читать по одной за раз. Прочитайте их, как описано в ссылке, которую я дал. - person Matthew Watson   schedule 30.04.2013BinaryReader.ReadInt32()
- person Matthew Watson   schedule 30.04.2013object aFileRecord = new Record()
иFileSystem.FileGetObject(1, ref aFileRecord, row)
- person jac   schedule 01.05.2013