2015-08-24 3 views
1

У меня есть класс, который создает файл сеанса на диске с написанными внутри разделенных двоеточиями полями.Чтение и запись массивов из файла

<% 
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() 

Теперь мне нужно, чтобы добавить дополнительное поле в этот файл. Задача:

  1. Как проверить, существует ли это поле в файле?
  2. Как обновить только это поле в файле?

Так что я думаю, что есть хорошие возможности использовать массивы, которые я могу назвать им именами.

В файле сеанса мне нужно записываемые данные, как:

{"sessionkey":"3yut267d273";"session_exp":"51453463";"username":"Alex"} 

Я думаю, что это должно быть что-то вроде этого, чтобы получить необходимые подал из файла:

AllData = sessionID.val("username") 

Так помочь мне написать право синтаксис для этого:

  1. Как написать массив в файл?
  2. Как вызвать только необходимый элемент массива из файла?
  3. Как изменить только необходимый (или несколько заданных полей) элемент массива в файле, а если он не существует, то создайте его?

ответ

2

Канонический способ заключается в том, чтобы импортировать файл (если он существует) в структуру данных в памяти при создании пользовательского объекта и записать структуру данных обратно в файл при уничтожении объекта. Вы можете использовать каждый раз, когда значение запрашивается или изменяется, но вам нужно каждый раз читать или записывать весь файл.

Чтобы сделать то, что вы просите, вам понадобится слой абстракции, отображающий элементы структуры данных в байты на диске. Базы данных NoSQL представляют собой реализации такого уровня абстракции. Я никогда не работал с одним, поэтому, я не могу сказать вам, как установить соединение с VBScript. Из того, что я почерпнул из Интернета, вам, возможно, придется использовать REST API (через XMLHttpRequest).

Смежные вопросы