Возникает ошибка открытия бинарного файла: "файл уже открыт". Дело в том, что у меня есть два приложения: одно, написанное на C++Builder:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
TFileStream *fileStream;
fileStream->Free();
fileStream = new TFileStream("E:/DELETE/n.dat",fmOpenReadWrite);
}
void __fastcall TForm1::StringGrid2SetEditText(TObject *Sender, int ACol,
int ARow, const UnicodeString Value)
{
fileStream->Position = (sizeof(nr) * nn);
fileStream->Write(&nrt.nn, sizeof(nr));
}
В данном приложении вносятся изменения и сохраняются в файл. Далее я читаю в C#
то что записалось:
private List<Int32> ReadBinaryFiles(string path)
{
List<Int32> testL = new List<Int32>();
Int32 obj = 0;
try
{
using (BinaryReader reader = new BinaryReader(
File.Open(
path,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite)))
{
while (reader.PeekChar() > -1)
{
obj = reader.ReadInt32();
testL.Add(obj);
}
}
}
catch (Exception e)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Ошибка: {0}", e.Message);
Console.ResetColor();
}
return testL;
}
Я понимаю, что вверху нужно закрыть этот файл, но мне нужно работать с файлом без его закрытия, возможно что-то придумать? Если нет, тот где правильно поставить fileStream->Free();
, чтобы при повторной записи файл был доступен? Может возможно открыть файл с разрешением на совместный доступ на чтение?
Возможно вам нужен fmShareDenyNone (для С++) и FileShare.ReadWrite (для C#).
Это даст вам возможность открыть файл так чтоб другие процессы тоже могли с ним работать.
fileStream = new TFileStream("E:/DELETE/n.dat", fmOpenReadWrite | fmShareDenyNone);
fmShareDenyNone is one of the attributes assignable in the Create. The TFileStream is used to read and write files. It specifies file sharing that does not prevent any other applications from reading from or writing to the file.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть следующий обобщенный класс (он пока не реализован до конца):
Веду разработку на unity3d, скрипты пишу на с#, опыт разработки у меня крайне небольшойБилд вылетает при запуске на телефоне Sony xperia XZ (на explay fire все...
Интересует - ,new object[] {s}) Почему s в фигурных скобках?