ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
この記事ではFileStream クラスC#で、ファイルの読み取りと書き込みの操作を実行するのに役立ちます。 実用的な例を検討し、FileStream の中核となる仕組みを理解し、ファイルデータを効率的に管理する方法を学びます。 このガイドは、C#でのファイル操作の初心者を対象としているため、言語は初心者に優しいまま、C#でのファイル操作の詳細な手順とIronPDFライブラリまた。
C#のFileStreamクラスは、バイトを使用してファイルを処理する方法を提供します。 ファイルに対する読み取りと書き込み操作で動作し、ファイルの内容を直接操作することができます。 これは、入出力タスクのためにファイルを扱うとき、特にバイト配列を操作するときに特に役立ちます。
FileStream は次のような用途に最適です:
FileStreamを使用して、ファイルを開き、データを書き込み、それを読み取る簡単な例を示します:
using System;
using System.IO;
public static void Main()
{
string path = "example.txt";
// Creating a FileStream object to handle the file. The file handle is acquired here.
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
fileStream.Write(data, 0, data.Length);
}
// Read from the file
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(text);
}
}
using System;
using System.IO;
public static void Main()
{
string path = "example.txt";
// Creating a FileStream object to handle the file. The file handle is acquired here.
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
fileStream.Write(data, 0, data.Length);
}
// Read from the file
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(text);
}
}
Imports System
Imports System.IO
Public Shared Sub Main()
Dim path As String = "example.txt"
' Creating a FileStream object to handle the file. The file handle is acquired here.
Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!")
fileStream.Write(data, 0, data.Length)
End Using
' Read from the file
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
Dim buffer(1023) As Byte
Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
Dim text As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
Console.WriteLine(text)
End Using
End Sub
この例では、ファイルの読み取りと書き込み操作を処理する FileStream オブジェクトを作成する例を示します。 FileStream クラスは、バイトを直接読み書きするため、大きなファイルやバイナリデータの処理に適しています。 テキストとバイト間の変換にはエンコーディングを使用しました。
データをファイルに書き込むには、Writeメソッドを使用します。 以下は、この翻訳がどのように機能するかを詳しく説明した例です:
using System;
using System.IO;
public static void Main()
{
string path = "output.txt";
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.");
int offset = 0;
int count = buffer.Length;
// Writing data to the file
fileStream.Write(buffer, offset, count);
}
}
using System;
using System.IO;
public static void Main()
{
string path = "output.txt";
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.");
int offset = 0;
int count = buffer.Length;
// Writing data to the file
fileStream.Write(buffer, offset, count);
}
}
Imports System
Imports System.IO
Public Shared Sub Main()
Dim path As String = "output.txt"
Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
Dim buffer() As Byte = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.")
Dim offset As Integer = 0
Dim count As Integer = buffer.Length
' Writing data to the file
fileStream.Write(buffer, offset, count)
End Using
End Sub
このコードでは、UTF8エンコーディングを使って文字列をバイト配列に変換しています。 Write メソッドは、現在の位置から始まるバイト配列をファイルに書き込みます。(オフセットにより決定)と指定されたバイト数を書き込みます。
それでは、FileStream を使ってファイルからデータを読み取る方法を探ってみましょう。
using System;
using System.IO;
public static void Main()
{
// File path
string path = "output.txt";
// File Stream Object
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
// Output Stream
string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(output);
}
}
using System;
using System.IO;
public static void Main()
{
// File path
string path = "output.txt";
// File Stream Object
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
// Output Stream
string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(output);
}
}
Imports System
Imports System.IO
Public Shared Sub Main()
' File path
Dim path As String = "output.txt"
' File Stream Object
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
Dim buffer(1023) As Byte
Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
' Output Stream
Dim output As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
Console.WriteLine(output)
End Using
End Sub
この例では:
FileStreamクラスは、ファイルへのアクセスを制御し、ファイルハンドルやシステムリソースの管理を細かく設定することができます。 FileStream を使用する場合、使用後にストリームが適切に破棄されるようにすることが重要です。()手動で、または自動的にストリームを破棄するステートメントを使用してください。
FileStream は、ファイルを読み書きするたびに、ファイル内の現在の位置を記録します。この位置には、Position プロパティを使用してアクセスできます:
fileStream.Position = 0; // Move to the beginning of the file
fileStream.Position = 0; // Move to the beginning of the file
fileStream.Position = 0 ' Move to the beginning of the file
FileStream は、非同期の読み取りおよび書き込み操作に使用でき、ファイル操作の実行中に他のプロセスを実行できるため、パフォーマンスが向上します。 以下は、非同期読み上げの基本的な例です:
using System;
using System.IO;
using System.Threading.Tasks;
public static async Task Main()
{
// Specified Path
string path = "output.txt";
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true))
{
byte[] buffer = new byte[1024];
int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length);
string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(result);
}
}
using System;
using System.IO;
using System.Threading.Tasks;
public static async Task Main()
{
// Specified Path
string path = "output.txt";
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true))
{
byte[] buffer = new byte[1024];
int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length);
string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(result);
}
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Public Shared Async Function Main() As Task
' Specified Path
Dim path As String = "output.txt"
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, True)
Dim buffer(1023) As Byte
Dim bytesRead As Integer = Await fileStream.ReadAsync(buffer, 0, buffer.Length)
Dim result As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
Console.WriteLine(result)
End Using
End Function
ReadAsync メソッドは、データを非同期に読み取ります。 FileAccess.Read と FileMode.Open パラメータは、ファイルへのアクセス方法を制御します。
FileStream**を使用する場合、例外処理は実行時エラーを回避し、システムリソースを適切に管理するために不可欠です。 ファイルを読み書きするときの例外処理のパターンを示します:
using System;
using System.IO;
public static void Main()
{
string path = "nonexistentfile.txt";
try
{
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
Console.WriteLine("Bytes Read: " + bytesRead);
}
}
catch (FileNotFoundException e)
{
Console.WriteLine($"Exception: {e.Message}");
}
}
using System;
using System.IO;
public static void Main()
{
string path = "nonexistentfile.txt";
try
{
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
Console.WriteLine("Bytes Read: " + bytesRead);
}
}
catch (FileNotFoundException e)
{
Console.WriteLine($"Exception: {e.Message}");
}
}
Imports System
Imports System.IO
Public Shared Sub Main()
Dim path As String = "nonexistentfile.txt"
Try
Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
Dim buffer(1023) As Byte
Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
Console.WriteLine("Bytes Read: " & bytesRead)
End Using
Catch e As FileNotFoundException
Console.WriteLine($"Exception: {e.Message}")
End Try
End Sub
FileStreamクラスは、特に大きなファイルを扱う場合に、より高速なパフォーマンスを可能にするバッファリング機構を備えています。 バッファを使用すると、データが一時的にメモリに保存されるため、常にディスクにアクセスする必要がなくなります。
using System;
using System.IO;
public static void Main()
{
string path = "bufferedfile.txt";
byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.");
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough))
{
fileStream.Write(data, 0, data.Length);
}
}
using System;
using System.IO;
public static void Main()
{
string path = "bufferedfile.txt";
byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.");
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough))
{
fileStream.Write(data, 0, data.Length);
}
}
Imports System
Imports System.IO
Public Shared Sub Main()
Dim path As String = "bufferedfile.txt"
Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.")
Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough)
fileStream.Write(data, 0, data.Length)
End Using
End Sub
ここでは、FileOptions.WriteThrough は、追加のバッファリングをバイパスして、データがファイルに直接書き込まれることを保証します。 ただし、パフォーマンス・チューニングのためにバッファ・サイズを制御することができます。
IronPDFは、.NETアプリケーション内でPDF文書を作成、編集、操作するための堅牢なC# PDFライブラリです。 開発者はHTMLなどのさまざまな入力からPDFを生成また、IronPDFを使用して、画像や生テキストも作成できます。 電子透かし、結合、分割、パスワード保護などの機能を持つIronPDFは、PDF出力を正確にコントロールするウェブアプリケーションやデスクトップアプリケーションに理想的です。
以下はIronPDFを使ってPDFを生成し、FileStreamに保存する例です。 IronPDFがどのようにFileStreamとスムーズに統合され、開発者がプログラムでPDFの作成と保存を制御できるかを示します。
using System;
using System.IO;
using IronPdf;
public static void Main()
{
// Define the file path
string path = "output.pdf";
// Create an HTML string that we want to convert to PDF
var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>";
// Initialize IronPDF's ChromePdfRenderer to render HTML as PDF
var renderer = new ChromePdfRenderer();
// Generate the PDF from the HTML string
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Use FileStream to save the generated PDF
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
pdfDocument.SaveAs(fileStream);
}
Console.WriteLine("PDF created and saved successfully.");
}
using System;
using System.IO;
using IronPdf;
public static void Main()
{
// Define the file path
string path = "output.pdf";
// Create an HTML string that we want to convert to PDF
var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>";
// Initialize IronPDF's ChromePdfRenderer to render HTML as PDF
var renderer = new ChromePdfRenderer();
// Generate the PDF from the HTML string
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
// Use FileStream to save the generated PDF
using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
{
pdfDocument.SaveAs(fileStream);
}
Console.WriteLine("PDF created and saved successfully.");
}
Imports System
Imports System.IO
Imports IronPdf
Public Shared Sub Main()
' Define the file path
Dim path As String = "output.pdf"
' Create an HTML string that we want to convert to PDF
Dim htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>"
' Initialize IronPDF's ChromePdfRenderer to render HTML as PDF
Dim renderer = New ChromePdfRenderer()
' Generate the PDF from the HTML string
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Use FileStream to save the generated PDF
Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
pdfDocument.SaveAs(fileStream)
End Using
Console.WriteLine("PDF created and saved successfully.")
End Sub
C#のFileStreamクラスは、ファイルの入出力を管理するための強力な機能を提供します。 バイト配列、ファイルパス、ストリーム処理がどのように連携して動作するかを理解することで、開発者は効率的にデータを読み書きし、ファイル内の現在位置を制御し、非同期で作業することができます。 FileStreamをIronPDFと組み合わせることで、開発者は.NETアプリケーション内でPDFを効率的に扱う柔軟性を得ることができます。 レポートの作成、ファイルの保存、動的コンテンツの処理のいずれにおいても、この組み合わせはPDFドキュメントの作成と保存に関する細かいコントロールを提供します。
IronPDFは無料試用また、ライセンス料は749ドルで、Professional PDF生成のニーズに対して競争力のあるソリューションとなっています。
9つの .NET API製品 オフィス文書用