ファイルを読みたいのですが、ファイルの最初からではなく、ファイルの特定のポイントで読みたいのです。たとえば、ファイルの先頭から977文字後にファイルを読み取り、次の200文字を一度に読み取りたいとします。ありがとう。
2928 次
4 に答える
6
ファイルをテキストとして読み取りたい場合は、文字(バイトではなく)をスキップします。
using (var textReader = System.IO.File.OpenText(path))
{
// read and disregard the first 977 chars
var buffer = new char[977];
textReader.Read(buffer, 0, buffer.Length);
// read 200 chars
buffer = new char[200];
textReader.Read(buffer, 0, buffer.Length);
}
(文字ではなく)特定のバイト数をスキップしたいだけの場合:
using (var fileStream = System.IO.File.OpenRead(path))
{
// seek to starting point
fileStream.Seek(977, SeekOrigin.Begin);
// read 200 bytes
var buffer = new byte[200];
fileStream.Read(buffer, 0, buffer.Length);
}
于 2010-12-08T20:51:18.857 に答える
2
Linqを使用して、charの配列をstringに変換できます。
これらの名前空間を追加します:
using System.Linq;
using System.IO;
次に、これを使用して、テキストファイルからaからbまでの文字のインデックスを開始する文字の配列を取得できます。
char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(a).Take(b).ToArray();
次に、文字列を作成できます。これには、cの連続文字が含まれます。
string r = new string(c);
たとえば、私はファイルにこのテキストを持っています:
こんにちは元気ですか ?
私はこのコードを使用します:
char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(6).Take(3).ToArray();
string r = new string(c);
MessageBox.Show(r);
そしてそれは示しています:どのように
方法2
非常に単純:部分文字列メソッドを使用
string s = File.ReadAllText(FilePath);
string r = s.Substring(6,3);
MessageBox.Show(r);
幸運を ;
于 2016-05-29T15:37:42.350 に答える
1
ファイルから特定のデータ型を読み取りたい場合System.IO.BinaryReader
は、最良の選択です。ファイルエンコーディングの使用についてよくわからない場合
using (var binaryreader = new BinaryReader(File.OpenRead(path)))
{
// seek to starting point
binaryreader.ReadChars(977);
// read
char[] data = binaryreader.ReadChars(200);
//do what you want with data
}
それ以外の場合、ソースファイルサイズの文字サイズが1バイトまたは2バイトであることがわかっている場合
using (var binaryreader = new BinaryReader(File.OpenRead(path)))
{
// seek to starting point
binaryreader.BaseStream.Position = 977 * X;//x is 1 or 2 base on character size in sourcefile
// read
char[] data = binaryreader.ReadChars(200);
//do what you want with data
}
于 2010-12-08T21:17:22.383 に答える
1
using (var fileStream = System.IO.File.OpenRead(path))
{
// seek to starting point
fileStream.Position = 977;
// read
}
于 2010-12-08T20:53:55.143 に答える