您的位置:首页 > Web前端 > JavaScript

javaScript读取txt文档的FSO对象和ADODB.Stream对象

2014-12-05 16:52 483 查看
转自:http://blog.163.com/chaosumin@126/blog/static/86387403201092793610651

在使用JavaScript读取txt文档时,一般使用javaScript的FSO对象,比如:

  function ReadText()
  {
  var fso, f1, ts, s="",test;
  var ForReading = 1;
  fso = new ActiveXObject("Scripting.FileSystemObject");

  ts = fso.OpenTextFile("d:\testfile.txt",ForReading,false,-1);//最后一个参数:-1采用unicode,-2 使用系统默认编码,缺省情况下使用ANSI编码

  while(!ts.AtEndOfStream){
test=ts.ReadLine();
  s+=test;
  }
  document.write(s);
  ts.Close();
}

  使用这种方法读取txt文档时,如果txt文档采用ANSI或者Unicode编码方式,可以正常读出,但当txt文档采用utf-8编码格式时,就会读出乱码。

  如果一定要使用JavaScript读取这种文档而不考虑客户端的问题,那么可以使用ADODB.Stream来代替FSO。下面的例子是从第三行开始读取文件,原txt文件内容为:

  这是一个Test
  UTF-8
  此地为一别

  孤蓬万里征
  浮云游子意
  落日故人情

  挥手自兹去
  萧萧班马鸣

  代码如下:

  window.onload=function(){
  var fileName = "D:/testfile.txt";
!
  var temp ="";
  var reader = new ActiveXObject("ADODB.Stream");
  reader.Type = 2;//文本形式
  reader.charset = "UTF-8";//编码
  reader.Open();
  reader.LoadFromFile( fileName );
  reader.Position=28;//这里的28是读了两行之后的position值,具体值根据文档内容不同
  while(!reader.EOS){//是否结束
  //alert(".Position: "+reader.Position);//默认从0开始
  temp+=reader.ReadText(-2)+"";//注意这里加了换行符
  //alert(temp.length);//这里的长度是字符长度,非字节
  }
  reader.Close();
  document.getElementById("content").innerText=temp;//写入到id为content的div中

}

  运行结果:
此地为一别

  孤蓬万里征
  浮云游子意
  落日故人情
  挥手自兹去
  萧萧班马鸣

  用到的方法以及属性:
  reader.ReadText(-2);//读取一行
  reader.ReadText();//读取所有内容 1Q4UZS 上网导航,网站目录,网址提交,网站目录,网址分类

  reader.Position//获取或者设置当前位置
  reader.EOS//文档是否结束 1Q4UZS 上网导航,网站目录,网址提交,网站目录,网址分类

  PS:
  如果要使用ADODB.Stream对象,需要修改一下注册表:
  regedit命令打开注册表,找到HKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->Internet Explorer->ActiveX Compatibility->00000566-0000-0010-8000-00AA006D2EA4,在右面窗口中右击Compatibility Flags,将它的值设为0。在修改此项时,需要关闭浏览器,修改完后再打开浏览器,就可以运行上面的代码了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: