asp读取txt问题
现有文件1.asp2.txt我想每天随机从2.txt抽取任意一行数据现在在1.asp上面请问代码应该这么写,请详细说明各个重要位置,谢谢!高分加附加分!急……我还想锁定每...
现有文件1.asp 2.txt
我想每天随机从2.txt抽取任意一行数据现在在1.asp上面
请问代码应该这么写,请详细说明各个重要位置,谢谢!
高分加附加分!急……
我还想锁定每天显示的只是同一行数据,而不是刷新后又变了一条! 展开
我想每天随机从2.txt抽取任意一行数据现在在1.asp上面
请问代码应该这么写,请详细说明各个重要位置,谢谢!
高分加附加分!急……
我还想锁定每天显示的只是同一行数据,而不是刷新后又变了一条! 展开
3个回答
展开全部
思路如下
在同级目录下面建立一个临时文件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)
%>
在同级目录下面建立一个临时文件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)
%>
展开全部
<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
%>
<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
%>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个回答中用了ReDim,按书上说的,ReDim是很消耗资源操作,尤其是当数组已经很大的时候。如果知道2.txt的行数大致范围,可以指定一个略大的数组。当然,使用ReDim的适应性更强。
第二个回答不是很符合要求(可以借鉴),其中后面的简单方法是显示全部内容,而非其中一条。
第二个回答不是很符合要求(可以借鉴),其中后面的简单方法是显示全部内容,而非其中一条。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询