Active Server Pages,ActiveServerPages+,ASP,ASP+,aspx,VBScript,IIS,internet,intranet,programming,programowanie,XML,Extensible Markup Language,kurs,opis,HTML,Hypertext Markup Language,JScript,JavaScript,wyszukiwarka,znajdz,instrukcja,Stelmik,Stelmi,free,darmo,zadarmo,free,serwer,server,www,konta,PHP,perl,klient,uslugi,asp,sklep internetowy,sklepy internetowe,e-sklep,esklep,tworzenie stron internetowych,strony internetowe,strony www,tworzenie stron www,strony internetowe,web page,webpage,creating,Krzysztof Stelmach,Krzysztof,Stelmach,www.stelmach.info,www.asp.z.pl
 
IP: 18.205.109.152 
 
 ASP / PLIKI
Szukaj:  
Pon, 06.07.2020r.
KURSY » języki - serwer » ASP » Pliki
 

ASP umożliwia dostęp do plików, katalogów oraz dysków poprzez obiekt FileSystemObject. Poprzez ten obiekt można tworzyć inne obiekty, tj. File, Folder lub Drive, które określają pliki, katalogi lub dyski komputera lokalnego. Obiekty FileSystemObject i File dostarczają metod i właściwości umożliwiających tworzenie obiektów TextStream, które określają pliki wejściowe i wyjściowe. Pliki tekstowe modą zastąpić bazę danych w przypadkach gdy będzie potrzeba przechowywania niewielkiej ilości danych.

Dostęp do pliku tekstowego

Obiekt TextSream dostarcza niezbędnych metod i właściwości umożliwiających odczytywanie i zapisywanie informacji do pliku tekstowego. Metody obiektu TextStream są następujące:

Read - odczytuje określoną ilość znaków z obiektu TextStream i zwraca ją w postaci łańcucha
ReadLine - odczytuje całą linię z obiektu TextStream i zwraca ją w postaci łańcucha bez znaku końca linii
ReadAll - odczytuje cały plik TextStream i w rezultacie go zwraca
Write - zapisuje łańcuch do pliku TextStream
WriteLine - zapisuje łańcuch do pliku TextStream i dodaje znak końca linii
Close - zamyka obiekt TextStream

zaś właściwości:

AtEndOfLine - zwraca wartość TRUE jeśli wskaźnik pliku TextStream znajduje się przed znakiem końca linii, a FALSE w przeciwnym wypadku
AtEndOfStream - zwraca wartość TRUE jeśli wskaźnik pliku znajduje się na końcu pliku
Column - zwraca wartość określającą bieżącą kolumnę, w której znajduje się wskaźnik pliku
Line - zwraca wartość określającą bieżącą linię, w której znajduje się wskaźnik pliku

Poniższy skrypt ASP demonstruje użycie podstawowych metod oraz właściwości obiektu TextStream. Skrypt otwiera plik C:plik.txt lub w przypadku, gdy nie istnieje, tworzy go. Następnie dodawany jest napis "To zostało napisane" oraz data tego wpisu, po czym plik jest zamykany. W dalszej części plik jest otwierany, odczytywana i wyświetlana jego zawartość, a następnie plik jest zamykany.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<% @LANGUAGE = VBScript %>
<% Option Explicit %>
<%
Const doOdczytu = 1, doZapisu = 2, doDopisu = 8
Const TristateUseDefault = -2 'Otwiera plik użuwając systemu domyślnego
Const TristateTrue = -1 'Otwiera plik jako Unicode
Const TristateFalse = 0 'Otwiera plik jako ASCII
Dim objFS, objTextStream, strLine

' Dołączenie tekstu do pliku
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
If objFS.FileExists("C:plik.txt") = True Then
13: Set objTextStream = objFS.OpenTextFile("C:plik.txt", doDopisu, False, TristateFalse)
14: Else
15: Set objTextStream = objFS.CreateTextFile("C:plik.txt", False, False)
16:
17:
18:
19:
20:
21:
End If
objTextStream.WriteLine "To zostało napisane " & Now & "."
objTextStream.Close

' Odczytanie zawartości pliku
Set objTextStream = objFS.OpenTextFile("C:plik.txt", doOdczytu, TristateFalse)
22:
23:
Response.Write "<P>Zawartość pliku jest następująca:</P>" & VbCrLf
Do While objTextStream.AtEndOfStream <> True
24:
25:
26:
strLine = objTextStream.ReadLine
strLine = Server.HTMLEncode(strLine)
Response.Write strLine & "<BR>" & VbCrLf
27:
28:
29:
30:
31:
32:
Loop
objTextStream.Close

Set objTextStream = Nothing
Set objFS = Nothing

%>

W liniach 5-7 deklarowane są stałe obiektu FileSystemObject. W linii 8 znajduje się deklaracja zmiennych użytych w skrypcie. W linii 11 tworzony jest obiekt FileSystemObject i przechowywany w zmiennej objFS. W liniach 12-16 sprawdzane jest czy plik o podanej nazwie istnieje poprzez wywołanie metody FileExists. Otwierany jest plik C:plik.txt lub w przypadku gdy on nie istnieje, zostaje utworzony. Linia 13

Set objTextS = objFS.OpenTextFile("C:plik.txt", doDopisu, False, TristateFalse)

otwiera plik C:plik.txt (pierwszy parametr) poprzez wywołanie metody OpenTextFile. Metoda posiada następujące parametry:

1. Nazwa_pliku - łańcuch zawierający nazwę otwieranego pliku
2. Tryb_We/Wy - określa jakie operacje będą wykonywane na pliku, np. odczyt doOdczytu (1), dopisywanie doDopisu (8); parametr opcjonalny
3. Utworzyć_jeśli_nie_istnieje - wartość boolowska określająca czy plik ma zostać utworzony w razie gdyby nie istniał; parametr opcjonalny
4. Format - określa format otwartego pliku; wartość domyślna to plik ASCII; parametr opcjonalny

Odnośnik do otwartego pliku jest przechowywany jako TextStream w zmiennej objTextStream (instrukcja Set). Komenda w linii 15 tworzy plik tekstowy C:plik.txt, jeśli taki nie istnieje. Parametry metody CreateTextFile są następujące:

1. Nazwa_pliku - łańcuch zawierający nazwę otwieranego pliku
2. Nadpisać_jeśli_istnieje - wartość boolowska, określająca czy plik ma zostać nadpisany w razie gdyby istniał; wartość FALSE uniemożliwia metodzie nadpisanie pliku; parametr opcjonalny
3. Plik_Unicode - wartość boolowska, określająca czy plik ma zostać utworzony jako plik unicode; parametr opcjonalny

Linie 12-16 można zastąpić pojedynczą linią, wyglądającą następująco:

Set objTextStream = objFS.OpenTextFile("C:plik.txt", doDopisu, True, TristateFalse)

Powyższa instrukcja automatycznie tworzy plik C:plik.txt przed jego otwarciem, jeśli taki jeszcze nie istnieje (trzeci parametr). W linii 17 do pliku dopisywany jest tekst zakończony przejściem do następnej linii (metoda WriteLine). Treść tekstu jest następująca: "To zostało napisane" oraz data pobrana w momencie dopisywania tego tekstu. Instrukcja w linii 18 zamyka obiekt TextStream, gdyż wywołana została metoda Close obiektu.
W następnej części skryptu, czyli w liniach 20-28, następuje otwarcie istniejącego już pliku (utworzonego w pierwszej części skryptu) i wyświetlenie jego zawartości. W linii 21 plik C:plik.txt został otwarty, wywołana została metoda OpenTextFile, w trybie do odczytu (drugi parametr - doOdczytu) oraz jako plik ASCII (parametr trzeci - TristateFalse). Zawartość pliku jest wysłana do przeglądarki (klienta) w linii 23-27. Warunek w pętli Do While dotyczy określenia końca pliku. Jeśli wystąpi informacja o końcu pliku, wartość właściwości AtEndOfStream będzie równa wartości TRUE i pętla zakończy swoje wykonywanie. W linii 24 zostaje odczytana pojedyncza linia znajdująca się w pliku i zapisana w zmiennej strLine. W linii 25 zawartość zmiennej strLine jest przetwarzana na tekst HTML i w linii 27 wyświetlana w oknie przeglądarki. Po zakończeniu wykonywania się pętli Do While, obiekt TextStream został zamknięty (linia 28) i zasoby serwera dotyczące obiektów objTextStream oraz objFS zostały zwolnione w liniach 30-31.

Odczytanie właściwości dysku

W celu pobrania informacji o dysku należy posłużyć się obiektem Drive, który zawiera w swoich właściwościach informacje na temat wszystkich zamontowanych na serwerze napędów dyskowych. Obiekt posiada 11 właściwości i nie posiada żadnej metody. Poniżej przedstawiony skrypt ASP odczytuje wszystkie właściwości napędu, na którym sam się znajduje i wyświetla je w oknie przeglądarki.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<% @LANGUAGE = VBScript %>
<% Option Explicit %>
<%
Const doOdczytu = 1, doZapisu = 2, doDopisu = 8
Const TristateUseDefault = -2 'Otwiera plik używając domyślnych ustawień
Const TristateTrue = -1 'Otwiera plik jako Unicode
Const TristateFalse = 0 'Otwiera plik jako ASCII
Dim objFS, strFile, strDriveName, objDrive
Dim strDriveType, R

Set objFS = Server.CreateObject("Scripting.FileSystemObject")
strFile = Request.ServerVariables("SCRIPT_NAME")
strFile = Server.MapPath(strFile)
strDriveName = objFS.GetDriveName(strFile)
Set objDrive = objFS.GetDrive(strDriveName)

R = "Właściwości napędu " & strDriveName & "<BR>"
R = R & "Nazwa napędu = " & objDrive.DriveLetter & "<BR>"
R = R & "Ścieżka = " & objDrive.Path & "<BR>"
R = R & "System plików = " & objDrive.FileSystem & "<BR>"
R = R & "Nazwa wolumenu = " & objDrive.VolumeName & "<BR>"
R = R & "Wolne miejsce = " & FormatNumber(objDrive.FreeSpace/1024, 0) & " KB<BR>"
23: R = R & "Pojemność = " & FormatNumber(objDrive.TotalSize/1024, 0) & " KB<BR>"
24:
25:
26:
27:
28:
R = R & "Katalog główny = " & objDrive.RootFolder & "<BR>"
R = R & "Numer seryjny = " & objDrive.SerialNumber & "<BR>"
R = R & "Nazwa udziału = " & objDrive.ShareName & "<BR>"

If objDrive.IsReady = True Then
29: R = R & "Stan dostępu = gotowy" & "<BR>"
30: Else
31: R = R & "Stan dostępu = brak gotości" & "<BR>"
32:
33:
End If
Select Case objDrive.DriveType
34:
35:
36:
37:
38:
39:
Case 0: strDriveType = "Nieznany"
Case 1: strDriveType = "Wymienialny"
Case 2: strDriveType = "Stały"
Case 3: strDriveType = "Sieciowy"
Case 4: strDriveType = "CD-ROM"
Case 5: strDriveType = "Dysk RAM"
40:
41:
42:
43:
44:
45:
46:
47:
End Select
R = R & "Typ napędu = " & strDriveType & "<BR>"

Response.Write R

Set objDrive = Nothing
Set objFS = Nothing

%>

W liniach 4-7 zostały zdefiniowane stałe użyte w skrypcie, zaś deklaracja zmiennych w liniach 8-9. W linii 11 został stworzony obiekt FileSystemObject, niezbędny w celu utworzenia obiektu Drive. W linii 12 zmiennej strFile została przypisana wartość zmiennej środowiskowej SCRIPT_NAME. Od tej pory zmienna strFile zawiera wirtualną ścieżkę do bieżącego skryptu. W linii 13 następuje odczytanie fizycznej ścieżki przez wykorzystanie zmiennej strFile oraz metody MapPath. W linii 14 nazwa dysku, na którym znajduje się skrypt, jest przypisana do zmiennej strDriveName za pomocą metody GetDriveName obiektu FileSystemObject. Obiekt Drive jest utworzony w linii 15 przez wywołanie metody GetDrive obiektu FileSystemObject i przechowywany w zmiennej objDrive. W liniach 17-41 następuje zapisanie wszystkich informacji dotyczących bieżącego dysku (obiektu Drive) do zmiennej R w postaci łańcucha. Każda właściwość obiektu Drive została omówiona już w skrypcie więc nie ma potrzeby do tego wracać. Linia 43 wysyła do przeglądarki (klienta) zawartość zmiennej R. W liniach 45-46 następuje zwolnienie zasobów serwera przeznaczonych dla obiektów objDrive oraz objFS.

Wykonywanie operacji na katalogach

W celu dokonywania jakichkolwiek operacji na katalogach należ posłużyć się obiektem Folder. Za pomocą jego metod można przenosić, kopiować oraz kasować katalogi. Można także utworzyć plik tekstowy używając metody CreateTextFile obiektu Folder.
Poniższy skrypt wyświetla fizyczną strukturę katalogu głównego WWW wraz z wszystkimi podkatalogami i plikami.

1:
2:
3:
4:
5:
6:
7:
<% @LANGUAGE = VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<P>Struktura katalogu:</P>
<%
Function Akapit(glebokosc)
8:
9:
Dim i, wyjscie
For i = 1 To glebokosc
10: wyjscie = wyjscie & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
11:
12:
Next
Akapit = wyjscie
13:
14:
15:
End Function

Function SprawdzKatalogi(ByRef objKatalog, ByVal glebokosc)
16:
17:
18:
19:
Dim Katalog, Plik, i
i = Akapit(glebokosc - 1)
Response.Write i & "<B>" & objKatalog.Name & "</B><BR>"
For Each Katalog In objKatalog.SubFolders
20: SprawdzKatalogi Katalog, glebokosc + 1
21:
22:
23:
Next
i = Akapit(glebokosc)
For Each Plik In objKatalog.Files
24: Response.Write i & Plik.Name & "<BR>"
25: Next
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
End Function

' Początek programu głównego
Dim objFS, objRootFolder, strVirtualRoot

strVirtualRoot = Server.MapPath("/")
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFS.GetFolder(strVirtualRoot)

SprawdzKatalogi objRootFolder, 1

Set objRootFolder = Nothing
Set objFS = Nothing

%>
</BODY>
</HTML>

Powyższy skrypt zawiera dwie funkcje (linie 7-26) oraz część główną skryptu (28-38). W części głównej znajduje się deklaracja zmiennych (linia 29) oraz tworzone są obiekty FileSystemObject i Folder. Wywołanie funkcji SprawdzKatalogi z parametrami znajduje się w linii 35. Wywołanie funkcji z parametrami może przyjąć także postać:

SprawdzKatalogi(objRootFolder, 1)

Funkcja za chwilę będzie omawiana. Ostatni fragment części głównej zwalnia zasoby serwera zajmowane przez obiekty objRootFolder i objFS.

Funkcja Akapit(glebokosc) zwraca łańcuch z pozycją (odstępem obrazującym wizualnie lokalizację) pliku lub katalogu. Parametrem wejściowym jest glebokosc, który zawiera pozycję (głębokość) pliku lub katalogu. Przypisanie wartości zwrotnej funkcji znajduje się w linii 12. Instrukcja informująca o końcu funkcji znajduje się w linii 13.

Funkcja SprawdzKatalogi(ByRef objKatalog, ByVal glebokosc) pełni rolę procedury, gdyż nie zwraca wartości.
W pierwszej części, linia 16 to deklaracja zmiennych wewnętrznych funkcji, tj. Katalog, Plik oraz i. W linii 17 następuje przyporządkowanie łańcucha zwróconego przez funkcję Akapit zmiennej i (parametrem wejściowym jest pozycja bieżącego katalogu zmniejszona o jeden), która jest wysyłana wraz z nazwą bieżącego katalogu do przeglądarki (klienta) w linii 18. Pętla For Each znajdująca się w liniach 19-21 w przypadku wystąpienia podkatalogów w katalogu bieżącym wywołuje się ona sama, z tą różnicą, że jej parametrami są teraz:

- bieżący podkatalog,
- pozycja (głębokość) zwiększona o jeden bieżącego katalogu.

W dalszej części, linia 22, zmiennej i przypisywana jest wartość łańcucha zwróconego przez funkcję Akapit z parametrem wejściowym równym poziomowi (głębokości) bieżącego katalogu. W liniach 23-25 znajduje się kolejna pętla For Each, która wyświetla nazwy wszystkich plików znajdujących się w bieżącym katalogu. Linia 24 informuje o zakończeniu funkcji SprawdzKatalogi. Funkcja SprawdzKatalogi jest funkcją rekurencyjną i jej działanie jest trochę złożone. Poniższa funkcja (PokazBiezacyKatalog) mogłaby zastąpić funkcję SprawdzKatalogi w przypadku, gdyby należało wyświetlić informacje tylko na temat bieżącego katalogu, bez wglądu w strukturę wewnętrzną podkatalogów. Funkcja PokazBiezacyKatalog nie posiada parametru wejściowego określającego poziom (głębokość) umieszczonych plików oraz podkatalogów, nie jest funkcją rekurencyjną, gdyż nie wywołuje się sama z kodu wewnętrznego.

1: Function PokazBiezacyKatalog(ByRef objKatalog)
2:
3:
4:
5:
Dim Katalog, Plik, i
i = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
Response.Write "<B>" & objKatalog.Name & "</B><BR>"
For Each Katalog In objKatalog.SubFolders
6: Response.Write i & "<B>" & Katalog.Name & "</B><BR>"
7:
8:
Next
For Each Plik In objKatalog.Files
9: Response.Write i & Plik.Name & "<BR>"
10: Next
11: End Function

Przenoszenie, kopiowanie i kasowanie plików i katalogów

Obiekt FileSystemObject dostarcza metod umożliwiających przenoszenie, kopiowanie oraz kasowanie plików i folderów. Oto one:

Copy - kopiuje określony plik lub katalog z jednego miejsca na drugie
Delete - usuwa określony plik lub katalog
Move - przenosi określony plik lub katalog z jednego miejsca na drugie
OpenAsTextStream - tworzy określony plik i zwraca obiekt TextStream, który może być użyty w celu odczytu i zapisu do pliku (metoda nie jest dostępna dla obiektu File)
 
do góry ^ 
Jesteś 2623925 odwiedzającym
 
 
Copyright © 2003-2020 Krzysztof Stelmach, Wszelkie prawa zastrzeżone.
 
System reklamy Test