4

C# では、ストリームリーダーの名前またはパスをどのように取得しますか?

すなわち

filein = new StreamReader(@"C:\ee\fff\Desktop\spreadtool\test.csv");

そして今、パスを正規表現したいのですが、どうすれば上記を参照できますか。filestreamer には getname() メソッドがあることは知っていますが、streamreader にはありますか? 調べてみましたが、ないようです。

4

4 に答える 4

12

StreamReader には、作成元の FilePath を含むプロパティがありません。ファイルからまったく作成されない場合があります (ストリームから作成できます)。パスが必要な場合は、StreamReader を作成する前に文字列に格納する必要があります

String file = @"C:\ee\ccc\Desktop\spreadtool\test.csv"
filein = new StreamReader(file);
String path = Path.GetDirectory(file);
于 2013-07-17T15:46:41.870 に答える
6

特定の StreamReader に名前またはパスがあると確信できる理由は何ですか? ネットワーク、またはメモリ ストリーム、シリアル接続、名前付きパイプ、データベース リンクから読み取っている可能性があります。リストは延々と続きます。

于 2013-07-17T15:46:32.633 に答える
1

リーダーを介してパスにアクセスする理由については言及していないので、「何か」を別のメソッドに渡し、パスに基づいて特定のタイプであるかどうかを確認してから読み取りたいと思います。

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 (ファイルをロック) を開いたりする必要がなくなります。

于 2013-07-17T15:58:07.967 に答える