从文件读取和写入数组
Read and write arrays to from file
我有一个 class 可以在磁盘上创建会话文件,其中写入以冒号分隔的字段。
<%
Class MySession
Private session_key, stream
Private Sub Class_Initialize
set stream = createobject("adodb.stream")
session_key = request.cookies("sessionkey")
if len(session_key) = 0 then
CreateSession()
end if
End Sub
' read from session file
Public Property Get val()
on error resume next
val = ""
stream.open
stream.loadfromfile "d:\" & session_key
val = stream.readtext
stream.close
End Property
' write session to file
Public Property Let val(userval)
on error resume next
stream.open
stream.writetext mycstr(userval)
for err11 = 0 to 50
stream.savetofile "d:\" & session_key, 2
if Err.Number = 0 then exit for
Err.Clear
next
stream.close
End Property
End Class
%>
现在我要填写会话文件
Set SessionID = new MySession
FillArr = FillArr & Request.cookies("sessionkey") & ":" & now()+1
For Row = 0 to Ubound(arrRst,1)
FillArr = FillArr & ":" & arrRst(Row, 0)
Next
SessionID.val() = FillArr
要读取我使用的会话文件中的所有数据
AllData = sessionID.val()
现在我需要向这个文件添加额外的字段。
问题是:
- 如何检查该字段是否已存在于文件中?
- 如何只更新文件中的这个字段?
所以我认为使用数组很好,我可以用它的名字来调用它。
在会话文件中我需要这样写数据:
{"sessionkey":"3yut267d273";"session_exp":"51453463";"username":"Alex"}
我认为从文件中获取所需的文件一定是这样的:
AllData = sessionID.val("username")
所以帮我写一个正确的语法来做到这一点:
- 如何将数组写入文件?
- 如何从文件中只调用需要的数组元素?
- 如何更改文件中仅需要的(或多个指定字段)数组元素,如果不存在则创建它?
规范的方法是在创建自定义对象时将文件(如果存在)导入内存中的数据结构,并在销毁对象时将数据结构写回文件。您可以可以 每次请求或更改值时都这样做,但每次都需要读取或写入整个文件。
要完成您的要求,您需要一个抽象层将数据结构元素映射到磁盘上的字节。 NoSQL 数据库是这种抽象层的实现。不过,我从来没有使用过,所以我无法告诉您如何从 VBScript 建立连接。根据我从网上收集到的信息,您可能必须使用 REST API(通过 )。
我有一个 class 可以在磁盘上创建会话文件,其中写入以冒号分隔的字段。
<%
Class MySession
Private session_key, stream
Private Sub Class_Initialize
set stream = createobject("adodb.stream")
session_key = request.cookies("sessionkey")
if len(session_key) = 0 then
CreateSession()
end if
End Sub
' read from session file
Public Property Get val()
on error resume next
val = ""
stream.open
stream.loadfromfile "d:\" & session_key
val = stream.readtext
stream.close
End Property
' write session to file
Public Property Let val(userval)
on error resume next
stream.open
stream.writetext mycstr(userval)
for err11 = 0 to 50
stream.savetofile "d:\" & session_key, 2
if Err.Number = 0 then exit for
Err.Clear
next
stream.close
End Property
End Class
%>
现在我要填写会话文件
Set SessionID = new MySession
FillArr = FillArr & Request.cookies("sessionkey") & ":" & now()+1
For Row = 0 to Ubound(arrRst,1)
FillArr = FillArr & ":" & arrRst(Row, 0)
Next
SessionID.val() = FillArr
要读取我使用的会话文件中的所有数据
AllData = sessionID.val()
现在我需要向这个文件添加额外的字段。 问题是:
- 如何检查该字段是否已存在于文件中?
- 如何只更新文件中的这个字段?
所以我认为使用数组很好,我可以用它的名字来调用它。
在会话文件中我需要这样写数据:
{"sessionkey":"3yut267d273";"session_exp":"51453463";"username":"Alex"}
我认为从文件中获取所需的文件一定是这样的:
AllData = sessionID.val("username")
所以帮我写一个正确的语法来做到这一点:
- 如何将数组写入文件?
- 如何从文件中只调用需要的数组元素?
- 如何更改文件中仅需要的(或多个指定字段)数组元素,如果不存在则创建它?
规范的方法是在创建自定义对象时将文件(如果存在)导入内存中的数据结构,并在销毁对象时将数据结构写回文件。您可以可以 每次请求或更改值时都这样做,但每次都需要读取或写入整个文件。
要完成您的要求,您需要一个抽象层将数据结构元素映射到磁盘上的字节。 NoSQL 数据库是这种抽象层的实现。不过,我从来没有使用过,所以我无法告诉您如何从 VBScript 建立连接。根据我从网上收集到的信息,您可能必须使用 REST API(通过 )。