導航:首頁 > 版本升級 > net文件如何刪除文件

net文件如何刪除文件

發布時間:2024-06-28 03:20:41

㈠ ASP.NET中如何實現刪除文件

界面布置主界面設計中有個「刪除」按鈕,其(ID)為btnDelete。用戶在目錄瀏覽中選中要刪除的項後,單擊該按鈕就可以完成刪除工作。代碼實現在「設計」面板中雙擊「刪除」按鈕,為其添加事件處理程序如下: private void BtnDelete_Click(object sender, System.EventArgs e) { DeleteThings(FileList.SelectedItem.Text); } private void DeleteThings(string FullPath) { if(FullPath.IndexOf(".")>0) //刪除文件{ File.Delete(FullPath); LoadDir(CurrentPath); //重新載入當前目錄} else //刪除目錄{ Directory.Delete(FullPath); LoadDir(CurrentPath); //重新載入當前目錄} } 刪除時首先判斷選中的是文件還是文件夾。如果是文件,則調用File.Delete()方法;反之則調用Directory.Delete()方法。刪除成功後再調用LoadDir()方法顯示更改後的目錄內容。

㈡ asp.net濡備綍鍒犻櫎鏂囦歡asp鍒犻櫎鏂囦歡

asp.net鍒犻櫎鎸囧畾鐨勬枃浠

鍚岀悊錛岄栧厛鐐瑰嚮鍒犻櫎紜璁ゆ枃浠舵槸鍚﹀瓨鍦錛岀劧鍚庢墽琛屽懡浠ゅ垹闄ゆ湰鍦版枃浠訛紝榪斿洖淇℃伅錛屽垹闄ゆ枃浠訛紝鎵ц屾暟鎹搴撳垹闄ゅ懡浠わ紝鐒跺悗欏甸潰鎻愮ず銆

asp.net涓瀵煎嚭excel鏁版嵁鐨勬柟娉曟眹鎬伙紵

1銆佺敱dataset鐢熸垚

澶嶅埗浠g爜浠g爜濡備笅:

publicvoidCreateExcel(DataSetds,stringtypeid,stringFileName)

{

HttpResponseresp;

resp=Page.Response;

resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

resp.AppendHeader("Content-Disposition","attachment;filename="+FileName);

stringcolHeaders="",ls_item="";

inti=0;

//瀹氫箟琛ㄥ硅薄涓庤屽瑰儚錛屽悓鏃剁敤DataSet瀵瑰叾鍊艱繘琛屽垵濮嬪寲

DataTabledt=ds.Tables;

DataRowmyRow=dt.Select("");

//typeid=="1"鏃跺煎嚭涓篍XCEL鏍煎紡鏂囦歡錛泃ypeid=="2"鏃跺煎嚭涓篨ML鏍煎紡鏂囦歡

if(typeid=="1")

{

//鍙栧緱鏁版嵁琛ㄥ悇鍒楁爣棰橈紝鍚勬爣棰樹箣闂翠互t鍒嗗壊錛屾渶鍚庝竴涓鍒楁爣棰樺悗鍔犲洖杞︾

for(i=0;icolHeaders+=dt.Columns.Caption.ToString()+"t";

colHeaders+=dt.Columns.Caption.ToString()+"n";

//鍚慔TTP杈撳嚭嫻佷腑鍐欏叆鍙栧緱鐨勬暟鎹淇℃伅

resp.Write(colHeaders);

//閫愯屽勭悊鏁版嵁

foreach(DataRowrowinmyRow)

{

//鍦ㄥ綋鍓嶈屼腑錛岄愬垪鑾峰緱鏁版嵁錛屾暟鎹涔嬮棿浠t鍒嗗壊錛岀粨鏉熸椂鍔犲洖杞︾n

for(i=0;ils_item+=row.ToString()+"t";

ls_item+=row.ToString()+"n";

//褰撳墠琛屾暟鎹鍐欏叆HTTP杈撳嚭嫻侊紝騫朵笖緗絀簂s_item浠ヤ究涓嬭屾暟鎹

resp.Write(ls_item);

ls_item="";

}

}

else

{

if(typeid=="2")

{

//浠嶥ataSet涓鐩存帴瀵煎嚭XML鏁版嵁騫朵笖鍐欏埌HTTP杈撳嚭嫻佷腑

resp.Write(ds.GetXml());

}

}

//鍐欑紦鍐插尯涓鐨勬暟鎹鍒癏TTP澶存枃浠朵腑

resp.End();

}

2銆佺敱datagrid鐢熸垚

澶嶅埗浠g爜浠g爜濡備笅:

publicvoidToExcel(System.Web.UI.Controlctl)

{

HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");

HttpContext.Current.Response.Charset="UTF-8";

HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.Default;

HttpContext.Current.Response.ContentType="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword

ctl.Page.EnableViewState=false;

System.IO.StringWritertw=newSystem.IO.StringWriter();

System.Web.UI.HtmlTextWriterhw=newSystem.Web.UI.HtmlTextWriter(tw);

ctl.RenderControl(hw);

HttpContext.Current.Response.Write(tw.ToString());

HttpContext.Current.Response.End();

}

鐢ㄦ硶錛歍oExcel(datagrid1);

3銆佽繖涓鐢╠ataview

澶嶅埗浠g爜浠g爜濡備笅:

publicvoidOutputExcel(DataViewdv,stringstr)

{

//

//TODO:鍦ㄦゅ勬坊鍔犳瀯閫犲嚱鏁伴昏緫

//

//dv涓鴻佽緭鍑哄埌Excel鐨勬暟鎹錛宻tr涓烘爣棰樺悕縐

GC.Collect();

Applicationexcel;//=newApplication();

introwIndex=4;

intcolIndex=1;

_WorkbookxBk;

_WorksheetxSt;

excel=newApplicationClass();

xBk=excel.Workbooks.Add(true);

xSt=(_Worksheet)xBk.ActiveSheet;

//

//鍙栧緱鏍囬

//

foreach(DataColumncolindv.Table.Columns)

{

colIndex++;

excel.Cells=col.ColumnName;

xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment=XlVAlign.xlVAlignCenter;//璁劇疆鏍囬樻牸寮忎負灞呬腑瀵歸綈

}

//

//鍙栧緱琛ㄦ牸涓鐨勬暟鎹

//

foreach(DataRowViewrowindv)

{

rowIndex++;

colIndex=1;

foreach(DataColumncolindv.Table.Columns)

{

colIndex++;

if(col.DataType==System.Type.GetType("System.DateTime"))

{

excel.Cells=(Convert.ToDateTime(row.ToString())).ToString("yyyy-MM-dd");

xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment=XlVAlign.xlVAlignCenter;//璁劇疆鏃ユ湡鍨嬬殑瀛楁墊牸寮忎負灞呬腑瀵歸綈

}

else

if(col.DataType==System.Type.GetType("System.String"))

{

excel.Cells="'"+row.ToString();

xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment=XlVAlign.xlVAlignCenter;//璁劇疆瀛楃﹀瀷鐨勫瓧孌墊牸寮忎負灞呬腑瀵歸綈

}

else

{

excel.Cells=row.ToString();

}

}

}

//

//鍔犺澆涓涓鍚堣¤

//

introwSum=rowIndex+1;

intcolSum=2;

excel.Cells="鍚堣";

xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment=XlHAlign.xlHAlignCenter;

//

//璁劇疆閫変腑鐨勯儴鍒嗙殑棰滆壊

//

xSt.get_Range(excel.Cells,excel.Cells).Select();

xSt.get_Range(excel.Cells,excel.Cells).Interior.ColorIndex=19;//璁劇疆涓烘祬榛勮壊錛屽叡璁℃湁56縐

//

//鍙栧緱鏁翠釜鎶ヨ〃鐨勬爣棰

//

excel.Cells=str;

//

//璁劇疆鏁翠釜鎶ヨ〃鐨勬爣棰樻牸寮

//

xSt.get_Range(excel.Cells,excel.Cells).Font.Bold=true;

xSt.get_Range(excel.Cells,excel.Cells).Font.Size=22;

//

//璁劇疆鎶ヨ〃琛ㄦ牸涓烘渶閫傚簲瀹藉害

//

xSt.get_Range(excel.Cells,excel.Cells).Select();

xSt.get_Range(excel.Cells,excel.Cells).Columns.AutoFit();

//

//璁劇疆鏁翠釜鎶ヨ〃鐨勬爣棰樹負璺ㄥ垪灞呬腑

//

xSt.get_Range(excel.Cells,excel.Cells).Select();

xSt.get_Range(excel.Cells,excel.Cells).HorizontalAlignment=XlHAlign.xlHAlignCenterAcrossSelection;

//

//緇樺埗杈規

//

xSt.get_Range(excel.Cells,excel.Cells).Borders.LineStyle=1;

xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight=XlBorderWeight.xlThick;//璁劇疆宸﹁竟綰垮姞綺

xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight=XlBorderWeight.xlThick;//璁劇疆涓婅竟綰垮姞綺

xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight=XlBorderWeight.xlThick;//璁劇疆鍙寵竟綰垮姞綺

xSt.get_Range(excel.Cells,excel.Cells).Borders.Weight=XlBorderWeight.xlThick;//璁劇疆涓嬭竟綰垮姞綺

//

//鏄劇ず鏁堟灉

//

excel.Visible=true;

//xSt.Export(Server.MapPath(".")+""+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);

xBk.SaveCopyAs(Server.MapPath(".")+""+this.xlfile.Text+".xls");

ds=null;

xBk.Close(false,null,null);

excel.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);

System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);

xBk=null;

excel=null;

xSt=null;

GC.Collect();

stringpath=Server.MapPath(this.xlfile.Text+".xls");

System.IO.FileInfofile=newSystem.IO.FileInfo(path);

Response.Clear();

Response.Charset="GB2312";

Response.ContentEncoding=System.Text.Encoding.UTF8;

//娣誨姞澶翠俊鎮錛屼負"鏂囦歡涓嬭澆/鍙﹀瓨涓"瀵硅瘽妗嗘寚瀹氶粯璁ゆ枃浠跺悕

Response.AddHeader("Content-Disposition","attachment;filename="+Server.UrlEncode(file.Name));

//娣誨姞澶翠俊鎮錛屾寚瀹氭枃浠跺ぇ灝忥紝璁╂祻瑙堝櫒鑳藉熸樉紺轟笅杞借繘搴

Response.AddHeader("Content-Length",file.Length.ToString());

//鎸囧畾榪斿洖鐨勬槸涓涓涓嶈兘琚瀹㈡埛絝璇誨彇鐨勬祦錛屽繀欏昏涓嬭澆

Response.ContentType="application/ms-excel";

//鎶婃枃浠舵祦鍙戦佸埌瀹㈡埛絝

Response.WriteFile(file.FullName);

//鍋滄㈤〉闈㈢殑鎵ц

Response.End();

}

瀵煎叆銆佸煎嚭EXCEL涓鐨勪竴浜涢棶棰樻眹鎬

涓銆佸湪欏圭洰涓鐨勬坊鍔犲紩鐢錛

鍙沖嚮欏圭洰璧勬簮綆$悊鍣ㄧ殑寮曠敤-->娣誨姞寮曠敤-->閫夋嫨.NET閫夐」鍗-->閫夋嫨Microsoft.Office.Interop.Excel-->紜瀹氾紱

鍦ㄩ夋嫨鏃舵敞鎰忎竴涓.NET緇勪歡鐨勭増鏈鍙鳳紝鏈渚嬬殑12.0.0.0鏄疧ffice2007鐨勭増鏈錛

浜屻佸湪欏圭洰涓浣跨敤Microsoft.Office.Interop.Excel:

濡傛灉鎯充嬌鐢∕icrosoft.Office.Interop.Excel,棣栧厛闇瑕佸湪欏圭洰涓寮曠敤鍛藉悕絀洪棿錛

usingMicrosoft.Office.Interop.Excel;

涓夈佸緩絝婨xcel.Application鐩稿叧瀵硅薄

澶嶅埗浠g爜浠g爜濡備笅:

//寤虹珛Application瀵硅薄

Microsoft.Office.Interop.Excel.ApplicationmyExcel=newApplication();

//寤虹珛Workbooks瀵硅薄

WorkbooksmyBooks=myExcel.Application.Workbooks;

//寤虹珛涓涓猄ystem.Reflection.Missing鐨刼bject瀵硅薄

objectoMissing=System.Reflection.Missing.Value;

鍥涖佹墦寮鎴栨柊寤篍xcel鐨刡ook鏂囦歡

澶嶅埗浠g爜浠g爜濡備笅:

//鎵撳紑Excel鏂囦歡錛屾敞鎰忛噷鐨勨淓xccelFilePath鈥濅負Excel鏂囦歡鍦ㄦ湇鍔″櫒涓婄殑鐗╃悊鍦板潃錛屽寘鎷鏂囦歡鍚

WorkbookmyBook=myBooks.Open(ExccelFilePath,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing);

//鏂板緩Workseet瀵硅薄,錛屾ゅ勪負瑕佹搷浣滅殑宸ヤ綔琛錛屽綋鍓嶈佹搷浣滅殑宸ヤ綔琛ㄧ殑鑾峰彇鏂規硶鏈変袱縐嶏細浣跨敤宸ヤ綔琛ㄧ殑緔㈠紩鍊兼垨浣跨敤宸ヤ綔琛ㄧ殑鍚嶇О錛屽悕縐伴粯璁や負錛氣渟heet1鈥/鈥淪heet2鈥濈瓑

WorksheetmySheet=(Worksheet)myBook.Worksheets;

//濡傛灉鏄鏂板緩EXCEL宸ヤ綔綈匡紝闇瑕佽劇疆濡備笅涓よ屽唴瀹癸紝浠ヤ繚璇佸伐浣滅翱涓鏈変竴涓宸ヤ綔琛錛

Workbookworkbook1=excel1.Workbooks.Add(true);

WorksheetmySheet=(Worksheet)workbook1.Worksheets;

//璁劇疆EXCEL瀵硅薄鏄鍚︽樉紺虹晫闈錛岄粯璁や負false涓嶆樉紺虹晫闈

myExcel.Visble=true;

浜斻佷竴浜涙瘮杈冮噸瑕佺殑閽堝笶xcel鐨勬搷浣

1銆佽幏鍙朢ange瀵硅薄

鈶犮佽幏鍙栦竴涓鍗曞厓鏍肩殑Range瀵硅薄錛

澶嶅埗浠g爜浠g爜濡備笅:

//閫夋嫨絎涓琛屻佺涓鍒楃殑鍗曞厓鐨勫崟鍏冩牸涓篟ange瀵硅薄

Ranger=(Excel.Range)mySheet.Cells;

//閫夋嫨澶氫釜榪炵畫鐨勫崟鍏冩牸涓篟ange瀵硅薄

Ranger=(Excel.Range)Range.get_Range("A1:F3")

鈶°佺粰鍗曞厓鏍艱祴鍊兼垨鍙栧嚭鍗曞厓鏍肩殑鍊:

澶嶅埗浠g爜浠g爜濡備笅:

//宸查夋嫨浜哛ange瀵硅薄鐨勮祴鍊礆細

r.Text="涓鍥";

//鏈閫夋嫨Range瀵硅薄鐨勮祴鍊:

mySheet.Cells.Text="涓鍥";

//宸查夋嫨浜哛ange瀵硅薄鐨勫彇鍊礆細

StringstrValue=r.Text;

//鏈閫夋嫨Range瀵硅薄鐨勫彇鍊:

StringstrValue=mySheet.Cells.Text;

鈶銆佺粰鍗曞厓鏍艱劇疆杈規

澶嶅埗浠g爜浠g爜濡備笅:

mySheet.Cells.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThin,XlColorIndex.xlColorIndexAutomatic,null);//鐢葷嚎

鈶c佸悎騫跺崟鍏冩牸

澶嶅埗浠g爜浠g爜濡備笅:

//鍚堝苟鍗曞厓鏍煎墠鍏堣佸皢瑕佸悎騫剁殑鍗曞厓鏍奸夋嫨涓篟ange瀵硅薄

Ranger=Range.get_Range("A1:F3")錛

//鐒跺悗鐜拌劇疆鍚堝苟鍗曞厓鏍

r.MergeCells=true;

鈶ゃ佽劇疆鍗曞厓鏍肩殑瀛椾綋銆佸瓧鍙楓佽儗鏅鑹茬瓑灞炴

澶嶅埗浠g爜浠g爜濡備笅:

mySheet.Cells.Font.Name="榛戜綋";

mySheet.Cells.Font.Size=20;

mySheet.Rows.RowHeight=40;

mySheet.Cells.Interior.Color=Color.FromArgb(224,224,224);//璁劇疆棰滆壊

鈶ャ佸垹闄や竴琛岋細

澶嶅埗浠g爜浠g爜濡備笅:

//棣栧厛鑾峰彇瑕佸垹闄ょ殑琛岀殑Range

Microsoft.Office.Interop.Excel.Rangerange=(Microsoft.Office.Interop.Excel.Range)mySheet.Rows,Type.Missing];

//娉ㄦ剰鍒犻櫎琛屽悗鍒犻櫎鍚庣殑琛屽彿琚涓嬮潰鐨勮屾浛鎹錛屽傛灉閫愯屽垹闄わ紝璇峰厛浠庢渶澶х殑琛屽彿寰鏈灝忕殑琛屽彿鍒犻櫎

range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp);

鈶︺佽幏鍙栨湁鏁版嵁鐨勮屾暟

澶嶅埗浠g爜浠g爜濡備笅:

introwsint=mySheet.UsedRange.Cells.Rows.Count;

鍏銆丒XCEL鏂囦歡鐨勪繚瀛樹笌閫鍑

1銆丒XCEL鐨勪繚瀛樹笌閫鍑

澶嶅埗浠g爜浠g爜濡備笅:

myBook.Save();

myBooks.Close();

myExcel.Quit();

2銆丒XCEL鎸囧畾鏂囦歡淇濆瓨

澶嶅埗浠g爜浠g爜濡備笅:

myBook.Close(true,FilePath+_file_Name,null);

涓冦侀噴鏀綞XCLE瀵硅薄鐨勮祫婧愪笌緇撴潫EXCEL榪涚▼

鍏充簬榪欐柟闈㈠唴瀹規湁濂藉氱綉鍙嬮兘鍦ㄨ插氱嶆柟娉曪紝緇忚繃鏈浜哄疄璺碉紝浠ヤ笅鏂歸潰鎵嶈兘鐪熸e仛鍒扮粨鏉烢XCEL鐨勪換鍔¤繘紼嬶細

1銆佸皢鎵鏈変互涓婂笶XCEL鐨勬搷浣滄斁鍒頒竴涓鏂規硶涓錛

2銆佸湪鎿嶄綔EXCEL鍚庯紝鍗蟲椂灝嗕笉浣跨敤瀵硅薄涓涓閲婃斁騫惰祴null鍊礆細

澶嶅埗浠g爜浠g爜濡備笅:

System.Runtime.InteropServices.Marshal.ReleaseComObject(mysheet);

mysheet=null;

System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);

myBook=null;

System.Runtime.InteropServices.Marshal.ReleaseComObject(myBooks);

myBooks=null;

System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);

myExcel=null;

3銆佸啀鏂板緩涓涓鏂規硶錛屽苟浠ヨユ柟娉曚腑鎵ц屼笂闈㈡柊寤虹殑鎿嶄綔EXCEL鏂規硶錛屽苟鍦ㄦ墽琛屽畬鎿嶄綔EXCEL鏂規硶鐨勫悗闈㈡坊鍔燝C.Collect()錛

澶嶅埗浠g爜浠g爜濡備笅:

//涓嬮潰鏂規硶涓璒utPutEXCEL()鏂規硶鏄杈撳嚭EXCEL鏂囦歡鐨勫笶XCEL

㈢ c#+asp.net如何刪除指定路徑下的文件和文件夾

.net提供了一個靜態類Directory 用以處理文件夾相關操作 要刪除指定路徑下的文件和文件夾的話 可以使用Directory.Exists方法判斷該路徑是否存在 如果存在使用Directory.GetDirectories獲取該路徑下所有子文件夾 通過遍歷使用Directory.Delete方法刪除 再通過Directory.GetFiles獲取該路徑下所有文件 遍歷使用File.Delete方法刪除 具體代碼如下

if(Directory.Exists(yourPath))
{
//獲取指定路徑下所有文件夾
string[]folderPaths=Directory.GetDirectories(yourPath);

foreach(stringfolderPathinfolderPaths)
Directory.Delete(folderPath,true);
//獲取指定路徑下所有文件
string[]filePaths=Directory.GetFiles(yourPath);

foreach(stringfilePathinfilePaths)
File.Delete(filePath);
}


如果你需要連你指定的文件夾一起刪除 就簡單的多 如下

if(Directory.Exists(yourPath))
Directory.Delete(yourPath,true);

上述兩例中的yourPath應為指定文件夾的路徑 如: D: est 第一例則會刪除test文件夾下的所有子項 第二例則是test文件夾及其子項一起刪除 需要注意的是Directory.Delete方法有兩個重載 舉例說明:

Directory.Delete(yourPath);//如果yourPath有子項則刪除失敗拋出異常
Directory.Delete(yourPath,true);//第二個為bool類型參數表示是否需要使用遞歸刪除

補充說明 如果只是需要刪除文件 就使用File類 如下

if(File.Exists(filePath))
File.Delete(filePath)

上例中的filePath為文件的完整路徑 如: C: est est.txt

㈣ .net 如何刪除文件及目錄

Directory.Delete("路徑",true);//刪除路徑及以下所有文件

㈤ asp.net 文件重命名和刪除

文件和資料庫是不可能自動聯繫到一起的,需要寫代碼去解決,需要獨立處理。

最好在更新資料庫的時候對文件做相應的操作。
比如在更新資料庫里文件名之前,先讀取出老的文件名,然後轉換成伺服器絕對路徑,找到並重命名老文件到新文件名,然後再更新資料庫。

文件操作主要用System.IO命名空間中的幾個類的靜態方法,你自己試試吧,比較簡單:
Directory、File、DirectoryInfo以及FileInfo 創建、刪除並移動目錄和文件,通過屬性獲取特定目錄和文件的相關信息

閱讀全文

與net文件如何刪除文件相關的資料

熱點內容
etc文件夾進不去 瀏覽:170
消失的眼角膜完整版電影簡介 瀏覽:848
檢察院大數據平台 瀏覽:137
ipad上如何查看網頁源代碼 瀏覽:549
壓縮文件有限制么 瀏覽:357
車貸哪個網站最好 瀏覽:1000
智能電視破解影視軟體 瀏覽:320
李采譚演的英語老師電影叫什麼 瀏覽:895
斗波文檔搜索批量下載工具 瀏覽:696
2012bmatlablinux 瀏覽:795
韓國有講賣淫的電影嘛 瀏覽:761
淘寶pdf轉word 瀏覽:268
數據透視表數據源有哪些 瀏覽:274
女女大尺度電影中國 瀏覽:405
金蝶資料庫連接怎麼做 瀏覽:321
清朝十部頂級戰爭電影 瀏覽:695
行屍2去三樓下載備份文件在哪裡 瀏覽:840
有個麥老師的那是什麼電影 瀏覽:778
cad列印不保存pdf文件 瀏覽:830
網上訂電影票為什麼只顯示三天的 瀏覽:164

友情鏈接