asp读取txt问题

现有文件1.asp2.txt我想每天随机从2.txt抽取任意一行数据现在在1.asp上面请问代码应该这么写,请详细说明各个重要位置,谢谢!高分加附加分!急……我还想锁定每... 现有文件1.asp 2.txt
我想每天随机从2.txt抽取任意一行数据现在在1.asp上面
请问代码应该这么写,请详细说明各个重要位置,谢谢!
高分加附加分!急……
我还想锁定每天显示的只是同一行数据,而不是刷新后又变了一条!
展开
 我来答
jofox
2008-09-28 · TA获得超过2.4万个赞
知道小有建树答主
回答量:587
采纳率:0%
帮助的人:438万
展开全部
思路如下
在同级目录下面建立一个临时文件temp.txt(第一行为日期,第二行为生成的随机函数)

程序每次先访问这个文件,看看第一行是否是当天的日期,如果是,就拿第二行作为要取得行数,如果不是,就生成一个随机行数做为今天的行数,同时更新temp.txt文件

以下代码调试通过,

<%

Function GetRandLine(filename) '取随机行号的函数
file=server.mappath(filename)'操作同一个目录中的文件
Const ForReading = 1, ForWriting = 2
Dim fso, f

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(file, ForReading)
ra = f.ReadAll
LineNum = f.Line
Randomize
c=Int((LineNum - 1 + 1) * Rnd + 1)'生成随机数,随机取一行
GetRandLine=c
f.close
End Function

sub write_temp(filename,lineno)
file=server.mappath(filename)'操作同一个目录中的文件
Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(file, ForWriting)
f.writeline(date())
f.writeline(lineno)
f.close
end sub

function check_temp(filename)'判断当天是否已经取过随机行号的函数,将当天的内容提前取出来存到临时文件temp.txt(第一行为日期,第二行为生成的随机数)
file=server.mappath(filename)'操作同一个目录中的文件
Const ForReading = 1, ForWriting = 2
Dim fso, f

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(file, ForReading)
filetime=f.ReadLine

if filetime=cstr(date()) then '看看当天是否已经取了随机数了
check_temp=true
else
check_temp=false
end if
f.close

end function

function get_line(filename,linenum)'取指定文件指定行的内容
file=server.mappath(filename)'操作同一个目录中的文件
Const ForReading = 1, ForWriting = 2
Dim fso, f

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(file, ForReading)
for i=1 to linenum -1
f.SkipLine
next
get_line = f.ReadLine
f.close
end function

if check_temp("temp.txt")=true then'如果当天已经取了随机数,则直接取出来,然后读文件,否则重写随机数文件temp.txt
lineno=get_line("temp.txt",2)
else
lineno=GetRandLine("2.txt")'取随机行数
write_temp "temp.txt",lineno '写入随机数文件
end if
response.write "今天的内容:"&get_line("2.txt",lineno)
%>
影舞之爱
2008-09-27 · TA获得超过116个赞
知道答主
回答量:147
采纳率:0%
帮助的人:0
展开全部
<html><head><title>基于文本的消息发布系统</title></head>
<body>
<table border="1" cellspacing="0" cellpadding="1" bordercolorlight="#dfdfdf" bordercolordark="#ffffff" align="center">
<tr bgcolor="#cccce6">
<td algin="center" colspan="2">最新消息</td>
</tr>
<%
Set fso=Server.CreateObject("ing.FileSystemObject")
Set fp=fso.OpenTextFile(Server.MapPath("message.txt"))
'打开message.txt

Do While fp.AtEndOfStream<>true
s=fp.ReadLine '读取一条数据

p=Instr(s,"*") '取得*号的位置
Messagetitle=Mid(s,1,p-1) '取得*号前边的字符串(消息标题)
s=Mid(s,p+1,Len(s)-p) '设变量s为*号后边的字符串

p=Instr(s,"*")
MessageUrl=Mid(s,1,p-1) '取得*号后边的字符串(链接地址)
s=Mid(s,p+1,Len(s)-p)

ttime=s '设定消息发布时间ttime为s
%>
<tr>

<td><a href='<%=MessageUrl%>'><%=Messagetitle%></a></td>
<td><%=ttime%></td>
</tr>
<!--生成表格,把消息显示出来-->
<%
Loop
Fp.close
Set fp=Nothing
Set fso=Nothing
%>
</table>
</body></html>
简单的方法
<%
dim fso,f
set fso=server.CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Server.MapPath("1.txt"),1)
Do While Not f.AtEndOfStream
response.write f.readline
loop
f.close
set f=nothing
set fso=nothing
%>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
roundbug
2008-09-27 · TA获得超过1714个赞
知道小有建树答主
回答量:733
采纳率:90%
帮助的人:245万
展开全部
第一个回答中用了ReDim,按书上说的,ReDim是很消耗资源操作,尤其是当数组已经很大的时候。如果知道2.txt的行数大致范围,可以指定一个略大的数组。当然,使用ReDim的适应性更强。

第二个回答不是很符合要求(可以借鉴),其中后面的简单方法是显示全部内容,而非其中一条。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式