1

byte[] を返す Web サービス (外部システム) にクエリを実行しています。この byte[] は csv ファイルです。byte[] を csv として一時的な場所に保存し、csv ファイルを解析してデータベースに渡します。

byte[] を直接読み取り、ファイルを一時的な場所に保存する代わりに、メモリに保存し、ファイルの内容をデータベースに解析することは可能ですか?

最初に実際にファイルとして保存せずに、オープニングバイト[]をファイルとして見ましたが、今何かが変わったかどうかわかりませんか? 任意の入力をいただければ幸いです。

4

4 に答える 4

5

見つけるのは簡単ではありませんが、標準で CSV パーサーがあります。

    public void HandleMycontent(byte[] content)
    {
        using (var stream = new System.IO.MemoryStream(content))
        {
            using (var reader = new StreamReader(stream))
            {
                using (var parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(reader))
                {
                    //parse my csv here
                }
            }
        }
    }
于 2013-02-07T10:35:31.570 に答える
2

MemoryStreamの代わりにクラスを使用できますFileStream

var stream = new MemoryStream(yourByteArray);
于 2013-02-07T09:53:20.980 に答える
1

あなたがリンクしている関連する質問は、それを Word にロードすることです。これは、ローカルで解析することとは大きく異なります。その場合は、それをMemoryStreamand CsvReader(external link) : job done: に接続するだけです:

using(var ms = new MemoryStream(theData))
using(var sr = new StreamReader(ms))
using(var reader = new CsvReader(sr)) {
    // read the data...
}
于 2013-02-07T09:55:02.783 に答える
0

Not completely sure about this since on the other side object should be serialized following the same logic, but you can give this a try:

MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
memoryStream.Write(serializedInstance, 0, serializedInstance.Length);
memoryStream.Seek(0, SeekOrigin.Begin);
string deserializedInstance = (string)binaryFormatter.Deserialize(memoryStream);
于 2013-02-07T09:55:12.387 に答える