C# では、ストリームリーダーの名前またはパスをどのように取得しますか?
すなわち
filein = new StreamReader(@"C:\ee\fff\Desktop\spreadtool\test.csv");
そして今、パスを正規表現したいのですが、どうすれば上記を参照できますか。filestreamer には getname() メソッドがあることは知っていますが、streamreader にはありますか? 調べてみましたが、ないようです。
C# では、ストリームリーダーの名前またはパスをどのように取得しますか?
すなわち
filein = new StreamReader(@"C:\ee\fff\Desktop\spreadtool\test.csv");
そして今、パスを正規表現したいのですが、どうすれば上記を参照できますか。filestreamer には getname() メソッドがあることは知っていますが、streamreader にはありますか? 調べてみましたが、ないようです。
StreamReader には、作成元の FilePath を含むプロパティがありません。ファイルからまったく作成されない場合があります (ストリームから作成できます)。パスが必要な場合は、StreamReader を作成する前に文字列に格納する必要があります
String file = @"C:\ee\ccc\Desktop\spreadtool\test.csv"
filein = new StreamReader(file);
String path = Path.GetDirectory(file);
特定の StreamReader に名前またはパスがあると確信できる理由は何ですか? ネットワーク、またはメモリ ストリーム、シリアル接続、名前付きパイプ、データベース リンクから読み取っている可能性があります。リストは延々と続きます。
リーダーを介してパスにアクセスする理由については言及していないので、「何か」を別のメソッドに渡し、パスに基づいて特定のタイプであるかどうかを確認してから読み取りたいと思います。
FileInfoを使用して、フルパス、サイズ、拡張子などを含むファイルの情報を渡し、FileInfo.OpenText()を使用して StreamReader を開くことができます。次に例を示します。
var fileInfo=new FileInfo(@"c:\path\to\my\file.csv");
....
using(var reader=fileInfo.OpenText())
{
var line=reader.ReadLine();
....
}
このようにして、FileStream への奇妙なキャストを回避したり、名前を渡すためだけに StreamReader (ファイルをロック) を開いたりする必要がなくなります。