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。在修改此项时,需要关闭浏览器,修改完后再打开浏览器,就可以运行上面的代码了。
在使用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。在修改此项时,需要关闭浏览器,修改完后再打开浏览器,就可以运行上面的代码了。
相关文章推荐
- 用ADODB.Stream代替FSO读取文本文件
- JavaScript 读取、写入Txt文档
- 用ADODB.Stream代替FSO读取文本文件
- asp下用ADODB.Stream代替FSO读取文本文件
- JavaScript 读取、写入Txt文档
- Adodb.Stream 对象 读取图片长度和宽度
- 读取导入excel表txt文档,并存储到List<E>对象中
- 利用AdoDb.Stream对象来读取UTF-8格式的文本文件
- JavaScript 读取、写入Txt文档
- 利用AdoDb.Stream对象来读取UTF-8格式的文本文件
- 用javascript实现读取txt文档的脚本
- 用javascript实现读取txt文档的脚本
- Java基础:向txt文档中追加写入多个对象,并读取
- 用ADODB.Stream代替FSO读取文本文件
- 用ADODB.Stream代替FSO读取文本文件
- Java基础:向txt文档中追加写入多个对象,并读取
- asp下用ADODB.Stream代替FSO读取文本文件
- 使用ADODB.Stream对象读二进制文件
- 如何在 Internet Explorer 中禁用和使用 ADODB.Stream 对象
- Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本流,从而实现对流的读、写和管理等操作.