プロジェクトでCSVReaderを使用して、Windowsサービスで.csvファイルを読み取ります。ファイルを処理するために.csvファイルをCSVReaderに渡し、正常に機能していました。しかし最近、csvファイルをデータベーステーブルに保存してそこから読み取ることにしました。ユーザーが処理のためにcsvファイルを送信すると、aspxページがcsvファイルを読み取り、それをバイト配列に変換してデータベースに保存します。サービスはテーブルを読み取り、バイト配列を取得してFilestreamに変換します。このストリームは、さらなる作業のためにCSVReaderに渡されます。これで、最後の行の最後の列に対してエラーがスローされます。これは、データベースを保存して読み取った後にのみ発生します。次のエラーが発生します。これを修正する方法がわかりません。
「CSVは、位置「494」のレコード「9」フィールド「3」の近くで破損しているようです。現在の生データ:」
Hearは、ファイルをバイト配列に変換するコードです....。
try
{
fs = new FileStream(filepath, FileMode.Open);
fsbuffer = new byte[fs.Length];
fs.Read(fsbuffer, 0, (int)fs.Length);
}
DBからバイト配列への読み取り.....。
myobject.FileByteArray = ObjectToByteArray(row);
public byte[] ObjectToByteArray(DataRow row)
{
if (row["fileBytearray"] == null)
return null;
try
{
BinaryFormatter bf = new BinaryFormatter();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bf.Serialize(ms, row["fileBytearray"]);
return ms.ToArray();
}
}
Stream fileStream = new MemoryStream(myobject.FileByteArray)
using (CsvReader csv =
new CsvReader(new StreamReader(fileStream, System.Text.Encoding.UTF7), hasHeader, ','))