Как се чете binary файл?

3 отговора 117 прегледа
#1

Как се чете binary файл?

Здрасвейте,
трябва да прочета един файл който не е нормален ASCII текстов, а е BINARY. Проблемът е, че ако го чета като текстов файл с това по-долу не става:


Dim FileData As String

FileOpen(1, "D:\" & FileName, OpenMode.Input, OpenAccess.Default)
Do Until EOF(1)
FileData = FileData & LineInput(1)
Loop
FileClose(1)


Логично, че няма да стане, защото видях, че по този начин операторът LineInput() се ориентира по символите 0Ah и 0Dh, за край на реда и съответно ги реже. От тук получавам един прекрасен бинарен файл ако искам, но с липсващите въпросни байтове на всичките места на които се срещат. Моля ако някой има пример за четене на бинарен файл, да помогне
Благодаря.

[image][линк][image]
Отговор
в отговор на Werewolf #2

Re: Как се чете binary файл?

File.OpenRead ти връща FileStream. Върху него си правиш един BinaryReader, а пък той си има метод ReadBytes(). Нещо като:


Dim stream As Stream
stream = File.OpenRead(filename)

Dim reader As New BinaryReader(stream)
Dim block As Byte()

Do
block = reader.ReadBytes(256)
' тук си обработваш текущия блок
Loop While block.Length = 256


но след безсънни дълги нощи станах силен и голям
и вече знам, че мога да се справя сам
Отговор
в отговор на Werewolf #3

Re: Как се чете binary файл?

Ъъъъ, то хубаво си постнал в .NET и очевидно търсиш решение за VB.NET, но начина по който работиш е малко старичък...
Ето ти решението на VB.NET:

Imports System.IO

Module Module1

Sub Main()
Dim BinFile As FileStream = New FileStream("D:\WINNT\winhelp.exe", FileMode.Open)
Dim Size As Integer = BinFile.Length
Dim Buffer(Size) As Byte
BinFile.Read(Buffer, 0, Size)
End Sub

End Module

И на C#:

using System;
using System.IO;

namespace stream2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
FileStream stream = new FileStream("D:\\WINNT\\winhelp.exe", FileMode.Open);
int size = (int)stream.Length;
byte[] data = new byte[size];
stream.Read(data, 0, size);
}
}
}


както виждаш, почти еднакви са.

---
...и аз пиша на кирилица!
Отговор
в отговор на ess #4

Re: Как се чете binary файл?

Благодаря колеги
ами да, на VB.NET съм писал, но всъшност няма значение на какво ми отговарят. Благодаря за помоща и написаното в двата варянта

[image][линк][image]
Отговор