顯示具有 應用程式 標籤的文章。 顯示所有文章
顯示具有 應用程式 標籤的文章。 顯示所有文章

2012年5月17日 星期四

懶人Unzipo

事實證明,越懶的人....越勤快....

因為在網路上"索取"了一些測試檔案
又懶得一個一個點開來解壓縮
就寫了一支程式來幫忙了...

流程大概如下:

  1. 搜尋所有類型檔案
  2. 檔案分組 >分成 7z單檔、7z多檔、rar 單檔、rar多檔、zip單檔
  3. 個別對分組群的 7z多檔、 rar多檔檢查檔案是否完結
    1. 抓取分佈檔1來判定頭檔是否存在
    2. 根據檔案大小判定尾檔是否存在
    3. 擷取尾檔檔名來判定檔案數量是否正確
  4. 讀取密碼表
  5. 對所有有效的分組群進行解壓縮
  6. 根據解壓後的資訊判定檔案是否正確
  7. 對所有錯誤的分組群進行 rar 測試(7z和zip的就不鳥它了)
  8. 取得錯誤的rar檔案名稱後進行fix,並rename回原本檔案
  9. 再次對錯誤的分組群進行流程5
  10. 移除*.html *.bat *.lnk *.htm
  11. done~
這是Step5 (Step1~4是看不到的、Lack是指檔案沒下載完、Fail是指檔案損毀)

這是Step8 (Step6-7是看不到的)

這是Step9


這就是結果了~







by Keng-li.Lin

2011年11月14日 星期一

Stop WebClinet.DownloadFiles() in MultiThread

使用WebClinet在multithread環境下下載檔案時的停止方式

ThreadList為 List元件 Thread形態的全域變數

假定Thread宣告內容為
Thread t1 = new Thread(() =>;
{
 try
 {
  using (WebClient mywebclient = new WebClient())
  {
   string sUrlToReadFileFrom = ImageUrl;
   string sFilePathToWriteFileTo = targeturl;
   Stream streamRemote = null;
   Stream streamLocal = null;
   using (WebClient client = new WebClient())
   {
    try
    {
     streamRemote = client.OpenRead(sUrlToReadFileFrom);

     streamLocal = new FileStream(sFilePathToWriteFileTo, FileMode.Create, FileAccess.Write, FileShare.None);

     int iByteSize = 0;
     byte[] byteBuffer = new byte[4096];

     while ((iByteSize = streamRemote.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
     {
      streamLocal.Write(byteBuffer, 0, iByteSize);
     }
    }
    catch (System.Net.WebException){// 可加入console.write}
    catch (Exception){// 可加入console.write}

    if (streamLocal != null){
streamLocal.Close();}
    if (streamRemote != null){streamRemote.Close();}
   }
  }
 }
 catch (System.Net.WebException){// 可加入console.write}
 catch (Exception){// 可加入console.write}
 ThreadList.Add(t1); 

 t1.Start();
}

停止則是另開了一個BackgroundWorker來進行
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
 int icount = 0;
 for (int ia = 0; ia < ThreadList.Count; ia++)
 {
  if (ThreadList[ia].IsAlive)
  {
   ThreadList[ia].Interrupt();
   icount++;
  }
  else
  {
   ThreadList[ia] = null;
  }
 }
 Thread.Sleep(500);
 bool totalStop = false;
 while (!totalStop)
 {
  totalStop = true;
  icount = 0;
  Thread.Sleep(500);
  for (int ia = 0; ia < ThreadList.Count; ia++)
  {
   if (ThreadList[ia] != null)
   {
    if (ThreadList[ia].IsAlive)
    {
     totalStop = false;
     icount++;
    }
    else
    {
     ThreadList[ia] = null;
    }
   }
  }
 }
}


by Keng-li.Lin

2009年1月6日 星期二

應用程式:FireFox3.0

最近因為KKman中毒了
開起來就當機...
所以就換了蠻多人用的Firefox3.0

FireFox 3.0
蠻好用的
想用的可以點上方觀網找載點
而它也有很多套件可以選擇
我裝了一些像:

IE Tab - 用來開IE語法的網頁
Adblock Plus - 擋廣告圖片...擋洪爺的廣告圖片....
Download Statusbar - 讓download情況縮在下方狀態列的程式
DownloadHelper - 方便找尋網頁上所有東西的下載點
Foxmarks Bookmark - 同步我的書籤(如IE我的最愛)
PCMan Plug-in - 讓我上PTT當鄉民...