js 讀寫文件

這幾天用js寫一個讀寫文件的程序,在此記錄一下遇到的問題~~html

最初的程序以下:spring

//讀文件瀏覽器

function readFile(filename){app

    var fso = new ActiveXObject("Scripting.FileSystemObject"); 函數

    var f = fso.OpenTextFile(filename,1); oop

    var s = "";測試

     while (!f.AtEndOfStream)firefox

           s += f.ReadLine()+"\n";htm

     f.Close();ip

     return s;

}

//寫文件

function writeFile(filename,filecontent){

     var fso, f, s ;

     fso = new ActiveXObject("Scripting.FileSystemObject"); 

     f = fso.OpenTextFile(filename,8,true);

     f.WriteLine(filecontent);

     f.Close();

     alert('ok');

}

      這兩個函數在參數filename爲絕對路徑時是沒問題的,可是若爲相對路徑則沒法正確運行~~~在網上查了很多資料,有人說OpenTextFile()的第一個參數既能夠是絕對路徑也能夠是相對路徑,也有人說只能是絕對路徑~~

      不管孰是孰非,我確實是用了相對路徑時就沒法正確運行。可是程序的移植性又要求參數不能直接傳絕對路徑~

      後來想到document.location.pathname包含當前路徑信息,不如用它作相應處理以得到當前路徑,再和須要打開的文件連在一塊不就成了絕對路徑了?捏哈哈~~~js 讀寫文件 - spring - 成功之門

      因而有了如下代碼:

//獲取絕對地址

function abPath(){

     var absolutePath = '';

     var pathArray = new Array(); 

     var currentFileLocation = document.location.pathname;    //alert(currentFileLocation);

     pathArray = currentFileLocation.split("\\");

     pathArray[0] = pathArray[0].substr(1,pathArray[0].length-1);

/***********************************************************/

/*作這樣的處理是由於alert(currentFileLocation)彈出:*/

/*        /D:\alpha\test.html      */

/*   固然test.html是調用這些函數的當前頁面啦 */

/***********************************************************/

     for(var i = 0; i<pathArray.length; i++){

            if(pathArray[i] != 'test.html')

            absolutePath = absolutePath + pathArray[i] + "\\";

     }//alert(absolutePath); 

     return absolutePath;

}

//讀文件

function readFile(filename){

      var absolutePath = abPath();

      filename = absolutePath + filename;  //alert(filename); 

      var fso = new ActiveXObject("Scripting.FileSystemObject");

      var f = fso.OpenTextFile(filename,1);

      var s = "";

      while (!f.AtEndOfStream)

      s += f.ReadLine()+"\n";

      f.Close();

      s = parseInt(s);

      return s;

}

//寫文件

function writeFile(filename,filecontent){

      var absolutePath = abPath();

      filename = absolutePath + filename;   //alert(filename); 

      var fso = new ActiveXObject("Scripting.FileSystemObject");  

      var f = fso.OpenTextFile(filename,2,true);

      f.WriteLine(filecontent); 

      f.Close();

}

這下好了,調用的時候能夠傳相對路徑了~~~~

      我用來測試的瀏覽器是IE6,後來發如今IE七、IE8中卻又沒法正確運行了~~~~用alert(currentFileLocation)一測試,發現它們彈出的路徑信息爲:/D:/alpha/test.html,與IE6的斜槓方向不一樣,因此要作不一樣的處理,同時還要增長瀏覽器版本判斷,代碼以下:

//判斷是否ie6

function isIe6(){

   var browserName = navigator.appName;   //alert(browserName);

   var browserVer = navigator.userAgent.toLowerCase();

   if(browserName == "Microsoft Internet Explorer"){

      if(browserVer.match(/msie ([\d.]+)/)[1] < 7) return true;

   }

   else return false;

}

//獲取絕對地址

function abPath(){

    var absolutePath = '';

    var pathArray = new Array();

    var loopindex = 0;

 

    var currentFileLocation = document.location.pathname;  alert(currentFileLocation);

 if(isIe6()){

   pathArray = currentFileLocation.split("\\");

   pathArray[0] = pathArray[0].substr(1,pathArray[0].length-1);

 } else {

   pathArray = currentFileLocation.split("/");

 }

 if(pathArray[0] == '')loopindex = 1;

 for(loopindex; loopindex<pathArray.length; loopindex++){

    if(pathArray[loopindex] != 'test.html')

       absolutePath = absolutePath + pathArray[loopindex] + "\\";

 }//alert(absolutePath); 

 return absolutePath;

}

//讀文件

function readFile(filename){

    var absolutePath = abPath();

    filename = absolutePath + filename;  //alert(filename); 

    var fso = new ActiveXObject("Scripting.FileSystemObject");

    var f = fso.OpenTextFile(filename,1);

    var s = "";

    while (!f.AtEndOfStream)

        s += f.ReadLine()+"\n";

    f.Close();

   s = parseInt(s);

   return s;

}

//寫文件

function writeFile(filename,filecontent){

    var absolutePath = abPath();

    filename = absolutePath + filename;  //alert(filename); 

    var fso = new ActiveXObject("Scripting.FileSystemObject");  

    var f = fso.OpenTextFile(filename,2,true);

    f.WriteLine(filecontent); 

    f.Close();

}  

       到此IE瀏覽器均可以正確讀寫文件了,有個缺憾就是在firefox瀏覽器中不能正確運行,由於firefox瀏覽器貌似不支持ActiveXObject控件,於是var fso = new ActiveXObject("Scripting.FileSystemObject"); 也就沒什麼用了~~唉~~~

       在傳相對路徑參數時,要用右斜槓,還要轉義,也就是要用兩個右斜槓分隔……用左斜槓或者單斜槓都不行,我不知道是我比較特殊仍是你們都這樣~~~js 讀寫文件 - spring - 成功之門

相關文章
相關標籤/搜索