1

我正在尝试两次读取同一个文件。

我一直在使用 aFileUpload来查找文件。我在第一次阅读时成功了,我使用 C# ans asp.net 中的下一个代码找出文件有多少行:

Stream data_file;
data_file=FileUpload1.PostedFile.InputStream;
string line;
int elements;
StreamReader sr = new StreamReader(data_file);
line = sr.ReadLine();
while (line != null)
{
elements = elements + 1;
line = sr.ReadLine();
}
sr.Close();

有了这个数字,我现在可以通过设置数组要容纳多少个元素来创建一个数组数组。这次的数组将保存文件中的数字,如下所示:

数据文件:

1,1

2,3

数组L[0][0]=1

数组L[0][1]=1

数组L[1][0]=2

数组L[1][0]=3

所以执行此操作的代码是下一个:

double [][] dime= new double [elements][];
string[] div;
string line2;
int nn=0;
StreamReader ssr = new StreamReader(data_file);
line2 = ssr.ReadLine();
while (line2 != null)
{
dimen[nn] = new double[2];
for (int m2 = 0; m2 < 2; m2++)
{
div=line2.Split(new Char[] { ' ', ',', '\t' });
dimenc[nn][m2] = Convert.ToDouble(div[m2]);
}
nn=nn+1;
line2 = ssr.ReadLine();
}
ssr.Close();

但是,数组说它是空的,但我知道我是否在完全不同的方法/第二个按钮中使用了代码的第二部分,但如果它使用相同的方法它不起作用,所以我的问题是:

怎么了?为什么第二个流媒体阅读器不工作?

4

1 回答 1

1

实际上@NLemay 评论可能是更好的解决方案。

但是如果有人需要两次读取上传的文件,您需要将文件缓存在内存中。将流读入 abyte[]或 aMemoryStream然后从中工作您的流阅读器。你会发现这HttpPostedFile.InputStream.CanSeek是错误的,这就是你想要做的。

对于一个byte[]

HttpPostedFile uFile = uploadFile.PostedFile;

byte[] data = new byte[uFile.ContentLength];
uFile.InputStream.Read(data, 0, uFile.ContentLength);

MemoryStream查找CopyStream方法

于 2012-11-16T16:48:41.460 回答