顯示具有 檔案處理 標籤的文章。 顯示所有文章
顯示具有 檔案處理 標籤的文章。 顯示所有文章

2023年5月3日 星期三

V20302 檔案處理 , 開啟檔案,寫入文字,讀取文字 - 存成 *_log.TXT , 並傳送至前端

 目的: V20302 將文字存入 *_log.TXT , 並傳送至前端

處理說明: 0>傳送檔案至前端 
                      1>>必需用 form.submit , 不可用 Ext.Ajax
                      2>>standardSubmit=true
                      3>>必需用主畫面 Ext.getCmp("s_form").submit
                             不可用子畫面 me.up("form").submit() 
                             也不可用子畫面 Ext.getCmp("mySubForm").submit()
                              --> 因為執行 submit 時,本子畫面已被 destroy() 
                                       this.up("window").close();
                                       this.up("window").destroy();
                  1>判斷檔案是否存在,若已存在,則刪除檔案
                       if (File.Exists(Tmp_out_pFName))
                       {   File.Delete(Tmp_out_pFName);  }

                  2>如何將文字存入 //換行
                       string  Tmp_Str = "Hello text" + "\r\n";
                       File.WriteAllText("myfilename.txt", Tmp_Str);
                       File.AppendAllText("myfilename.txt", Tmp_Str);

                  3>讀取檔案的文字
                      string  Tmp_Str = File.ReadAllText("myfilename.txt");

                   4>複製檔案
                       File.Copy("myname.txt", "myname2.txt");





1>*.js
  var cur_recs = Ext.getCmp('grid_Single').getSelectionModel().getSelection();
 for (let i = 0; i <= cur_recs.length - 1; i++) {
            console.log("i:", i);
            cur_rec = cur_recs[i];
            Tmp_DataAry1.push(cur_rec.data);
 }  // for i=0 to 
        let Tmp_DataString1 = JSON.stringify(Tmp_DataAry1);
            var np = {};
        np["DataString1"] = Tmp_DataString1;      
   //me.up("form").submit({      
   Ext.getCmp('s_form').submit({
                method: "POST",
                url: '../../api/V20302API/DoRemove',
                standardSubmit: true,      
                params: np,
                async: false,
            })  //end of form.submit


2>*.cs
//開啟檔案
string Tmp_out_FName = "V20306_系統件除帳_log.txt";      //處理_log.txt
string documentPath = HttpContext.Current.Server.MapPath("~") + "document\\";  // 取得實實的路徑  string Tmp_out_pFName = documentPath + Tmp_out_FName;    //含 path 的Filename
            if (File.Exists(Tmp_out_pFName))
            {
                File.Delete(Tmp_out_pFName);
            }

//using (StreamWriter sw = new StreamWriter(Tmp_out_pFName))   //小寫TXT     
//{            
  for (var i = 0; i < dt1.Rows.Count; i++)
 {
     Tmp_FMNO = dt1.Rows[i]["FMNO"].ToString();
      Tmp_Sql = " SELECT   A.RPNOAF,A.TYPEAF as CSM_TYPEAF,B.TYPEAF as FM_TYPEAF  "
                      + "  FROM     CSM_AF@TLS_245 A, AMM_FM B   "
                      + "   WHERE  A.RPNOAF = nvl(B.MRPNOAF, B.RPNOAF)  "
                      + "   AND        B.FMNO = " + myfunc.AA(Tmp_FMNO);
                    Tmp_Str = myfunc.SqlValue(Tmp_Sql);
                    Tmp_RPNOAF = myfunc.StrExtract(Tmp_Str, 1);
                    Tmp_CSM_TYPEAF = myfunc.StrExtract(Tmp_Str, 2);
                    Tmp_FM_TYPEAF = myfunc.StrExtract(Tmp_Str, 3);
                    if (Tmp_CSM_TYPEAF != Tmp_FM_TYPEAF)
                    {
                        Tmp_Str = "交修單號(" + Tmp_RPNOAF + ")"
                                       + " AMM約別(" + Tmp_FM_TYPEAF + ") "
                                       + "和 TLS的約別(" + Tmp_CSM_TYPEAF + ") 不同 ,"
                                       + "敬請檢核!!<br>"+"\r\n";
                        //File.WriteAllText(Tmp_out_pFName, Tmp_Str);
                        File.AppendAllText(Tmp_out_pFName, Tmp_Str);
                        Tmp_Str =File.ReadAllText(Tmp_out_pFName);
                            //sw.WriteLine(Tmp_Str);
                        }
                }//   for (var i = 0; i < dt1.Rows.Count; i++)
   //sw.Close();


PS: c# using 的使用方法如下:
1>引入命名空間
    using System.Text;
2>使用資源後,自動釋放 
using (var file = File.Open("filePath", FileMode.OpenOrCreate))
{
   //do something
}

-->
FileStream file = File.Open("filePath", FileMode.OpenOrCreate);
try
{
//do something
}
finally
{
if (file!= null)
{
((IDisposable)file).Dispose();
}
}