本記事は以下のURLをもとに、C#(VisualStudio2019)でのテキストファイルの入出力を説明してみる試みです。
・StreamWriter クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.streamwriter?view=net-5.0
・StringReader クラス
(https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stringreader?view=net-5.0
→StreamWriterと対になっているのは、このURLだと思いますが、こちらは意図した通りに動かなかったので、以下を参照。)
https://docs.microsoft.com/ja-jp/dotnet/standard/io/how-to-read-text-from-a-file
まず、最初にプログラム冒頭で以下を定義
using System.IO;
StreamWriterのサンプルコードは以下。Cドライブの中身を.txtファイルに吐き出させます。
namespace StreamReadWrite
{
class Program
{
static void Main(string[] args)
{
// Get the directories currently on the C drive.
DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();
// Write each directory name to a file.
using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
{
foreach (DirectoryInfo dir in cDirs)
{
sw.WriteLine(dir.Name);
}
}
// Read and show each line from the file.
string line = "";
using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
{
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
}
これを実行することによって、Cドライブ直下のファイルのリストを
以下のフォルダに.txt形式で取得できます。
C:\Users\xxxx\source\repos\xxxx\xxxx\bin\Debug
(xxxx:各PCの設定に依存)
引き続き、このファイルを読み込むために以下のサンプルプログラムを使用します。
namespace StreamReadWrite
{
class Program
{
public static void Main()
{
try
{
// Open the text file using a stream reader.
using (var sr = new StreamReader("CDriveDirs.txt"))
{
// Read the stream as a string, and write the string to the console.
Console.WriteLine(sr.ReadToEnd());
}
}
catch (IOException e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
new StreamReader部分でテキストファイルを吐き出させたファイル名を指定すれば、読み込むことができます。
また、try-catch関数を使うことによって、
ファイルがない場合、ファイルが指定のフォルダ直下に無い旨を、コマンドプロンプト上のエラー文で明言できます。