服务器端临时文件删除的问题 静态方法System.IO.File.Delete(文件路径); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你下载的话, 是通过什么方式的?如果是Response.BinaryWrite(bytes) 把文件内容的byte[]传给客户端的话在取得byte[]后就把那文件删掉如果是生成后, 一直在等用户来取, 比如一周了, 用户还不来取, 那你判断起来的确麻烦但有个办法是, 专门起一个服务, 来进行旧文件定期删除用FileInfo info = new FileInfo("文件名");string s1 = info.CreationTime.ToString();string s2 = info.LastWriteTime.ToString();当s1和s2不相等的话, 就是被访问过的文件, 可以删除 如果是以Response.BinaryWrite(byte[])方式把文件打开写到客户端的方式 , 那在取得byte[]后就可以把文件删除了如果是生成后等用户来访问, 时间不一定的时候可以做一个windows服务, 或在生成文件时判断一下临时目录中的各临时文件的创建时间和最后访问时间, 两者不一致, 就是无用文件FileInfo info = new FileInfo("c:\\test.txt");string s1 = info.CreationTime.ToString();string s2 = info.LastAccessTime.ToString(); using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Net; using System.IO; using System.Threading; namespace MyGetCar { /// /// Form1 的摘要说明。 /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox srcAddress; private System.Windows.Forms.TextBox tarAddress; private System.Windows.Forms.StatusBar statusBar; private System.Windows.Forms.Button Start; private WebClient client = new WebClient(); /// /// 必需的设计器变量。 /// private System.ComponentModel.Container components = null; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// /// 清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.srcAddress = new System.Windows.Forms.TextBox(); this.tarAddress = new System.Windows.Forms.TextBox(); this.statusBar = new System.Windows.Forms.StatusBar(); this.Start = new System.Windows.Forms.Button(); this.SuspendLayout(); // // label1 // this.label1.Location = new System.Drawing.Point(8, 32); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(72, 23); this.label1.TabIndex = 0; this.label1.Text = "文件地址:"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // label2 // this.label2.Location = new System.Drawing.Point(8, 72); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(72, 23); this.label2.TabIndex = 1; this.label2.Text = "另存到:"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // srcAddress // this.srcAddress.Location = new System.Drawing.Point(80, 32); this.srcAddress.Name = "srcAddress"; this.srcAddress.Size = new System.Drawing.Size(216, 21); this.srcAddress.TabIndex = 2; this.srcAddress.Text = ""; // // tarAddress // this.tarAddress.Location = new System.Drawing.Point(80, 72); this.tarAddress.Name = "tarAddress"; this.tarAddress.Size = new System.Drawing.Size(216, 21); this.tarAddress.TabIndex = 3; this.tarAddress.Text = ""; // // statusBar // this.statusBar.Location = new System.Drawing.Point(0, 151); this.statusBar.Name = "statusBar"; this.statusBar.Size = new System.Drawing.Size(312, 22); this.statusBar.TabIndex = 4; // // Start // this.Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.Start.Location = new System.Drawing.Point(216, 112); this.Start.Name = "Start"; this.Start.Size = new System.Drawing.Size(75, 24); this.Start.TabIndex = 5; this.Start.Text = "开始下载"; this.Start.Click += new System.EventHandler(this.Start_Click); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(312, 173); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.Start, this.statusBar, this.tarAddress, this.srcAddress, this.label2, this.label1}); this.MaximizeBox = false; this.Name = "Form1"; this.Text = "文件下载器"; this.ResumeLayout(false); } #endregion /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.Run(new Form1()); } private void StartDownload() { Start.Enabled = false; string URL = srcAddress.Text; int n = URL.LastIndexOf('/'); string URLAddress = URL.Substring(0,n); string fileName = URL.Substring(n+1,URL.Length-n-1); string Dir = tarAddress.Text; string Path = Dir+'\\'+fileName; try { WebRequest myre=WebRequest.Create(URLAddress); } catch(WebException exp) { MessageBox.Show(exp.Message,"Error"); } try { statusBar.Text = "开始下载文件..."; client.DownloadFile(URLAddress,fileName); Stream str = client.OpenRead(URLAddress); StreamReader reader = new StreamReader(str); byte[] mbyte = new byte[100000]; int allmybyte = (int)mbyte.Length; int startmbyte = 0; statusBar.Text = "正在接收数据..."; while(allmybyte>0) { int m = str.Read(mbyte,startmbyte,allmybyte); if(m==0) break; startmbyte+=m; allmybyte-=m; } FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write); fstr.Write(mbyte,0,startmbyte); str.Close(); fstr.Close(); statusBar.Text = "下载完毕!"; ////在这个时候删除!//} catch(WebException exp) { MessageBox.Show(exp.Message,"Error"); statusBar.Text = ""; } Start.Enabled = true; } private void Start_Click(object sender, System.EventArgs e) { Thread th = new Thread(new ThreadStart(StartDownload)); th.Start(); } } } to cyp503(谁怕?一蓑烟雨任平生)老大,我是用浏览器,不是WinForm 在DOM中,装载一个XML文档的方法是什么???? ASP+ACESS用户注册模块疑问 有什么基础才能读懂CLR via C# ORM 分享一段代码 实例失败 一个DataGrid使用的是来自OleDb数据库的数据。如何使用CacheDependency实现缓存? DataGrid的Command问题,事件处理问题 WCF 新手的一些疑问 这样的要求.我该如何实现???100分!!各位帮忙!!!!急急急!刚才分给错,再+80分.哪位解决,两分同赠!!谢谢各位高手! 小case,在线等,马上接分! sql语句错误!
专门起一个服务, 来进行旧文件定期删除
用FileInfo info = new FileInfo("文件名");
string s1 = info.CreationTime.ToString();
string s2 = info.LastWriteTime.ToString();
当s1和s2不相等的话, 就是被访问过的文件, 可以删除
Response.BinaryWrite(byte[])方式把文件打开写到客户端的方式 , 那在取得byte[]后就可以把文件删除了如果是生成后等用户来访问, 时间不一定的时候
可以做一个windows服务, 或在生成文件时判断一下临时目录中的各临时文件的创建时间和最后访问时间, 两者不一致, 就是无用文件
FileInfo info = new FileInfo("c:\\test.txt");
string s1 = info.CreationTime.ToString();
string s2 = info.LastAccessTime.ToString();
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.IO;
using System.Threading; namespace MyGetCar
{
///
/// Form1 的摘要说明。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox srcAddress;
private System.Windows.Forms.TextBox tarAddress;
private System.Windows.Forms.StatusBar statusBar;
private System.Windows.Forms.Button Start; private WebClient client = new WebClient(); ///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} ///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.srcAddress = new System.Windows.Forms.TextBox();
this.tarAddress = new System.Windows.Forms.TextBox();
this.statusBar = new System.Windows.Forms.StatusBar();
this.Start = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(8, 32);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(72, 23);
this.label1.TabIndex = 0;
this.label1.Text = "文件地址:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 72);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(72, 23);
this.label2.TabIndex = 1;
this.label2.Text = "另存到:";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// srcAddress
//
this.srcAddress.Location = new System.Drawing.Point(80, 32);
this.srcAddress.Name = "srcAddress";
this.srcAddress.Size = new System.Drawing.Size(216, 21);
this.srcAddress.TabIndex = 2;
this.srcAddress.Text = "";
//
// tarAddress
//
this.tarAddress.Location = new System.Drawing.Point(80, 72);
this.tarAddress.Name = "tarAddress";
this.tarAddress.Size = new System.Drawing.Size(216, 21);
this.tarAddress.TabIndex = 3;
this.tarAddress.Text = "";
//
// statusBar
//
this.statusBar.Location = new System.Drawing.Point(0, 151);
this.statusBar.Name = "statusBar";
this.statusBar.Size = new System.Drawing.Size(312, 22);
this.statusBar.TabIndex = 4;
//
// Start
//
this.Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.Start.Location = new System.Drawing.Point(216, 112);
this.Start.Name = "Start";
this.Start.Size = new System.Drawing.Size(75, 24);
this.Start.TabIndex = 5;
this.Start.Text = "开始下载";
this.Start.Click += new System.EventHandler(this.Start_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(312, 173);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.Start,
this.statusBar,
this.tarAddress,
this.srcAddress,
this.label2,
this.label1});
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "文件下载器";
this.ResumeLayout(false); }
#endregion ///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void StartDownload()
{
Start.Enabled = false;
string URL = srcAddress.Text;
int n = URL.LastIndexOf('/');
string URLAddress = URL.Substring(0,n);
string fileName = URL.Substring(n+1,URL.Length-n-1);
string Dir = tarAddress.Text;
string Path = Dir+'\\'+fileName; try
{
WebRequest myre=WebRequest.Create(URLAddress);
}
catch(WebException exp)
{
MessageBox.Show(exp.Message,"Error");
} try
{
statusBar.Text = "开始下载文件...";
client.DownloadFile(URLAddress,fileName);
Stream str = client.OpenRead(URLAddress);
StreamReader reader = new StreamReader(str);
byte[] mbyte = new byte[100000];
int allmybyte = (int)mbyte.Length;
int startmbyte = 0;
statusBar.Text = "正在接收数据...";
while(allmybyte>0)
{
int m = str.Read(mbyte,startmbyte,allmybyte);
if(m==0)
break; startmbyte+=m;
allmybyte-=m;
} FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write);
fstr.Write(mbyte,0,startmbyte);
str.Close();
fstr.Close(); statusBar.Text = "下载完毕!"; //
//在这个时候删除!
//
}
catch(WebException exp)
{
MessageBox.Show(exp.Message,"Error");
statusBar.Text = "";
} Start.Enabled = true;
}
private void Start_Click(object sender, System.EventArgs e)
{
Thread th = new Thread(new ThreadStart(StartDownload));
th.Start();
}
}
}
老大,我是用浏览器,不是WinForm