Как се чете binary файл?
3 отговора
117 прегледа
Как се чете 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]
трябва да прочета един файл който не е нормален 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]
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
но след безсънни дълги нощи станах силен и голям
и вече знам, че мога да се справя сам
Re: Как се чете binary файл?
Ъъъъ, то хубаво си постнал в .NET и очевидно търсиш решение за VB.NET, но начина по който работиш е малко старичък...
Ето ти решението на VB.NET:
И на C#:
както виждаш, почти еднакви са.
---
...и аз пиша на кирилица!
Ето ти решението на 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);
}
}
}
както виждаш, почти еднакви са.
---
...и аз пиша на кирилица!
Re: Как се чете binary файл?
Благодаря колеги
ами да, на VB.NET съм писал, но всъшност няма значение на какво ми отговарят. Благодаря за помоща и написаното в двата варянта

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