Vytváření datových proudů
Záložní úložiště je paměťové médium, jako je například disk nebo paměť. Každé záložní úložiště implementuje vlastní datový proud jako implementaci třídy Stream. Každý typ datového proudu čte a zapisuje bajty, z a do jeho daného záložního úložiště. Datové proudy, které se připojují k záložnímu úložišti se nazývají základní datové proudy. Základní datové proudy mají konstruktory, které mají parametry nezbytné pro připojení datového proudu k záložnímu úložišti. Například FileStream má konstruktory, které určí parametr cesty, který určuje jak bude soubor sdílen procesy a tak dále.
Design tříd System.IO poskytuje zjednodušené vytváření datových proudů. Základní datové proudy mohou být přiřazeny k jednomu nebo více průchozím proudům, které poskytují funkce, které chcete. Modul pro čtení nebo zápis může být připojen na konec řetězce tak, aby upřednostňované typy bylo možno snadno číst nebo zapisovat.
Následující příklad kódu vytvoří FileStream kolem existující ho souboru MyFile.txt za účelem načtení souboru MyFile.txt do vyrovnávací paměti. (Všimněte si, že FileStreams jsou ve výchozím nastavení ukládány do vyrovnávací paměti.) Dále je vytvořen StreamReader za účelem čtení znaků z FileStream, které jsou předány StreamReader jako argument konstruktoru. ReadLine čte, dokud Peek nenajde žádné další znaky.
Imports System
Imports System.IO
Public Class CompBuf
Private Const FILE_NAME As String = "MyFile.txt"
Public Shared Sub Main()
If Not File.Exists(FILE_NAME) Then
Console.WriteLine("{0} does not exist!", FILE_NAME)
Return
End If
Dim fsIn As new FileStream(FILE_NAME, FileMode.Open, _
FileAccess.Read, FileShare.Read)
' Create an instance of StreamReader that can read
' characters from the FileStream.
Using sr As New StreamReader(fsIn)
Dim input As String
' While not at the end of the file, read lines from the file.
While sr.Peek() > -1
input = sr.ReadLine()
Console.WriteLine(input)
End While
End Using
End Sub
End Class
using System;
using System.IO;
public class CompBuf
{
private const string FILE_NAME = "MyFile.txt";
public static void Main()
{
if (!File.Exists(FILE_NAME))
{
Console.WriteLine("{0} does not exist!", FILE_NAME);
return;
}
FileStream fsIn = new FileStream(FILE_NAME, FileMode.Open,
FileAccess.Read, FileShare.Read);
// Create an instance of StreamReader that can read
// characters from the FileStream.
using (StreamReader sr = new StreamReader(fsIn))
{
string input;
// While not at the end of the file, read lines from the file.
while (sr.Peek() > -1)
{
input = sr.ReadLine();
Console.WriteLine(input);
}
}
}
}
using namespace System;
using namespace System::IO;
public ref class CompBuf
{
private:
static String^ FILE_NAME = "MyFile.txt";
public:
static void Main()
{
if (!File::Exists(FILE_NAME))
{
Console::WriteLine("{0} does not exist!", FILE_NAME);
return;
}
FileStream^ fsIn = gcnew FileStream(FILE_NAME, FileMode::Open,
FileAccess::Read, FileShare::Read);
// Create an instance of StreamReader that can read
// characters from the FileStream.
StreamReader^ sr = gcnew StreamReader(fsIn);
String^ input;
// While not at the end of the file, read lines from the file.
while (sr->Peek() > -1)
{
input = sr->ReadLine();
Console::WriteLine(input);
}
sr->Close();
}
};
int main()
{
CompBuf::Main();
}
Následující příklad kódu vytvoří FileStream kolem existující ho souboru MyFile.txt za účelem načtení souboru MyFile.txt do vyrovnávací paměti. (Všimněte si, že FileStreams jsou ve výchozím nastavení ukládány do vyrovnávací paměti .) Dále je vytvořen BinaryReader pro čtení bajtů z FileStream, které jsou předány BinaryReader jako argument konstruktoru. ReadByte čte, dokud PeekChar nenajde žádné další znaky.
Imports System
Imports System.IO
Public Class ReadBuf
Private Const FILE_NAME As String = "MyFile.txt"
Public Shared Sub Main()
If Not File.Exists(FILE_NAME) Then
Console.WriteLine("{0} does not exist.", FILE_NAME)
Return
End If
Dim f As New FileStream(FILE_NAME, FileMode.Open, _
FileAccess.Read, FileShare.Read)
' Create an instance of BinaryReader that can
' read bytes from the FileStream.
Using br As new BinaryReader(f)
Dim input As Byte
' While not at the end of the file, read lines from the file.
While br.PeekChar() > -1
input = br.ReadByte()
Console.WriteLine (input)
End While
End Using
End Sub
End Class
using System;
using System.IO;
public class ReadBuf
{
private const string FILE_NAME = "MyFile.txt";
public static void Main()
{
if (!File.Exists(FILE_NAME))
{
Console.WriteLine("{0} does not exist.", FILE_NAME);
return;
}
FileStream f = new FileStream(FILE_NAME, FileMode.Open,
FileAccess.Read, FileShare.Read);
// Create an instance of BinaryReader that can
// read bytes from the FileStream.
using (BinaryReader br = new BinaryReader(f))
{
byte input;
// While not at the end of the file, read lines from the file.
while (br.PeekChar() > -1 )
{
input = br.ReadByte();
Console.WriteLine(input);
}
}
}
}
using namespace System;
using namespace System::IO;
public ref class ReadBuf
{
private:
static String^ FILE_NAME = "MyFile.txt";
public:
static void Main()
{
if (!File::Exists(FILE_NAME))
{
Console::WriteLine("{0} does not exist.", FILE_NAME);
return;
}
FileStream^ f = gcnew FileStream(FILE_NAME, FileMode::Open,
FileAccess::Read, FileShare::Read);
// Create an instance of BinaryReader that can
// read bytes from the FileStream.
BinaryReader^ br = gcnew BinaryReader(f);
Byte input;
// While not at the end of the file, read lines from the file.
while (br->PeekChar() >-1 )
{
input = br->ReadByte();
Console::WriteLine(input);
}
br->Close();
}
};
int main()
{
ReadBuf::Main();
}