当前位置:编程学习 > C#/ASP.NET >>

解压后用Directioyinfo无法获得目录文件的问题

--------------------编程问答-------------------- 顶一个 --------------------编程问答-------------------- 谢谢 soonfei支持哈 我也是偶尔发现这个问题的 上传和解压的文件均已成功,仅在读取生成目录里的文件时却返回文件夹内无文件 感觉好像刷新文件夹一下才能成功  究竟为什么请高手指点一下 --------------------编程问答-------------------- 不知道,有没有人碰到过这个问题? --------------------编程问答--------------------
引用 2 楼 netlearner 的回复:
谢谢 soonfei支持哈 我也是偶尔发现这个问题的 上传和解压的文件均已成功,仅在读取生成目录里的文件时却返回文件夹内无文件 感觉好像刷新文件夹一下才能成功 究竟为什么请高手指点一下

是的 刷新一次啊 因为解压成功后文件名有可能重复 --------------------编程问答-------------------- to zyloveyrf:文件名没有重复,解压缩会自动覆盖已存在文件,我把读取代码
string jpgs = "|";
DirectoryInfo di = new DirectoryInfo(curl);
foreach (FileInfo fileinfo in di.GetFiles())
{
if (fileinfo.Extension.ToLower() == ".jpg")
{
jpgs += fileinfo.Name.ToString() + "|";
}
Response.Write(fileinfo.Name);
}   
单独建立一个文件运行时没问题。 --------------------编程问答-------------------- 将代码更改测试结果:
解压代码相同
string fileurl="rar/"+上传压缩文件名; //上传压缩文件,压缩文件内含4个图片文件
string curl = Server.MapPath("./" + "unRar/");//解压路径
  //判断有无解压目录,无则生成
  if (!Directory.Exists(curl))
  {
  try
  {
  Directory.CreateDirectory(curl);
  }
  catch (Exception ec)
  {
  Lbl.Text = ec.Message.ToString();
  cmd.Dispose();
  conn.Close();
  conn.Dispose();
  return;
  }
  }
  //解压开始
  String myRar;
  RegistryKey myReg;
  Object myObj;
  String myInfo;
  ProcessStartInfo myStartInfo;
  Process myProcess;
  try
  {
  myReg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRar.exe\Shell\Open\Command");
  myObj = myReg.GetValue("");
  myRar = myObj.ToString();
  myReg.Close();
  myRar = myRar.Substring(1, myRar.Length - 7);
  myInfo = " e " + Server.MapPath(fileurl) + " " + curl; myStartInfo = new ProcessStartInfo();
  myStartInfo.FileName = myRar;
  myStartInfo.Arguments = myInfo;
  myStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  myProcess = new Process();
  myProcess.StartInfo = myStartInfo;
  myProcess.Start();
  myProcess.Close();
  myProcess.Dispose();
  //Lbl.Text = "<font color=red>解压缩成功</font>";
  }
  catch (Exception ex)
  {
  Lbl.Text = ex.ToString();
  cmd.Dispose();
  conn.Close();
  conn.Dispose();
  return;
  }
  //解压结束
//读取文件代码 放入另一文件read.aspx
Response.Redirect("read.aspx?curl=" + curl, true);

read.aspx代码如下:

Response.Write(Request.QueryString["curl"].ToString()+"目录是否存在" + Directory.Exists(Request.QueryString["curl"].ToString()).ToString());
Response.Write(" 目录下文件数:"+Directory.GetFiles(Request.QueryString["curl"].ToString()).Length.ToString());

直接提交结果为:137052300049\2\2011\目录是否存在True 目录下文件数:0 
如果刷新read.aspx则结果为:目录是否存在True 目录下文件数:5 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,