从StreamReader c# - asp.net MVC3到数组的文件名
本文关键字:数组 文件名 MVC3 net StreamReader asp | 更新日期: 2023-09-27 18:01:19
我的应用程序是MVC3 c#;我正在使用json填充两个下拉列表,使用以下内容:
public ActionResult CheckWord(string cword)
{
try
{
List<string[]> arrayList = new List<string[]>();
List<string[]> stateList = new List<string[]>();
//
List<string[]> fileList = new List<string[]>();
//
string[] filePaths = Directory.GetFiles(System.Web.HttpContext.Current.Server.MapPath("/Video"), "*.srt");
string[] fnList = new string[filePaths.Length];
for (int i = 0; i < fnList.Length; ++i)
{
FileInfo fi = new FileInfo(filePaths[i]);
fnList[i] = fi.Name.Substring(0, fi.Name.LastIndexOf(".srt"));
}
int nFiles = filePaths.Length;
string cacheline = "";
string line;
for (int i = 0; i < nFiles; ++i)
{
StreamReader file = new StreamReader(System.Web.HttpContext.Current.Server.MapPath("/Video/" + fnList[i] + ".srt"));
List<string> lines = new List<string>();
List<string> statments = new List<string>();
//
List<string> fnames = new List<string>();
//
while ((line = file.ReadLine()) != null)
{
if (line.Contains(cword))
{
statments.Add(line);
// fnames.Add(file);
lines.Add(cacheline);
}
cacheline = line;
}
file.Close();
var array = lines.ToArray();
arrayList.Add(array);
stateList.Add(statments.ToArray());
}
return Json(new { success = true, fnList = fnList, arrayList = arrayList.ToArray(), stateList = stateList.ToArray() });
}
catch { }
return Json(new { success = false });
}
我正在检查一个单词是否存在于一组文件中;然后在一个下拉列表中显示文件的名称,在另一个下拉列表中显示每个文件的行。它工作得很好,但是它给了我一个所有文件的列表,因为我要发回fnlist。然而,我试图只显示包含该词的文件;我无法从StreamReader中获取文件名并将其添加到数组fileList中。谢谢您的建议。
已经有这么多列表了!为什么不是另一个呢?您已经在循环上下文中使用fnList[i]
打开了文件,因此…
List<string[]> results = new List<string[]>();
....
while ((line = file.ReadLine()) != null) {
if (line.Contains(cword)) {
results.Add(fnList[i]);
break; // optional, if possible, but if you need to continue check for dupes
}
}
....
return Json(new {
success = true,
fnList = results.ToArray(),
arrayList = arrayList.ToArray(),
stateList = stateList.ToArray()
});
System.IO。StreamReader file = new System.IO.StreamReader("setup.txt");
之后,我们想要打印流读取器正在使用的文件名。例如,如果有一个错误,我想要一个消息框,显示"错误读取文件:'filename'"
MessageBox.Show("Error loading " + ((FileStream)file.BaseStream).Name);
不知道你到底在寻找什么,但既然你是从一个文件名创建StreamReader,为什么不把文件名放在一个单独的变量中,以后再使用它:
var fileName = System.Web.HttpContext.Current.Server.MapPath(
"/Video/" + fnList[i] + ".srt");
StreamReader file = new StreamReader(fileName);