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

转自: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.οnlοad=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。在修改此项时,需要关闭浏览器,修改完后再打开浏览器,就可以运行上面的代码了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值