AutoIt/Pliki - funkcje obsługi

Z Wikibooks, biblioteki wolnych podręczników.

Tworzenie pliku[edytuj]

_FileCreate[edytuj]

#include <File.au3>
_FileCreate ( $sFilePath )

Funkcja tworzy plik o zerowej długości. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error<>0, 1 - błąd podczas otwierania pliku, 2 - plik nie mógł zostać zapisany).

$sFilePath - nazwa tworzonego pliku (ewentualnie ze ścieżką dostępu)

UWAGA: Jeżeli plik istnieje to jest nadpisywany.

Przykład:

#include <File.au3>

_FileCreate("plik_testowy.txt")


Zapis do pliku[edytuj]

_FileWriteToLine[edytuj]

#include <File.au3>
_FileWriteToLine ( $sFilePath, $iLine, $sText [, $bOverWrite = False] )

Funkcja zapisuje tekst do określonego wiersza w pliku. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error<>0, 1 - plik ma mniej wierszy niż $iLine, 2 - plik nie istnieje, 3 - błąd przy otwieraniu pliku, 4 - $iLine nieprawidłowy, 5 - $bOverWrite nieprawidłowy, 6 - $sText nieprawidłowy).

$sFilePath - nazwa pliku tekstowego (ewentualnie ze ścieżką dostępu)

$iLine - numer zapisywanego wiersza

$sText - zapisywany tekst

$bOverWrite - True - nadpisywanie wiersza, False - tryb INSERT (domyślne)

Przykład:

#include <File.au3>

_FileCreate("plik_testowy.txt")
FileWriteLine("plik_testowy.txt", "1" & @CRLF & "2" & @CRLF & "3" & @CRLF & "4" & @CRLF & "5" & @CRLF & "6")
ShellExecute("plik_testowy.txt")

Sleep(500)
MsgBox(0, "_FileWriteToLine", "")

_FileWriteToLine("plik_testowy.txt", 3, "666",True)
_FileWriteToLine("plik_testowy.txt", 5, "wasta" & @CRLF & "AutoIt", False)
ShellExecute("plik_testowy.txt")


_FileWriteFromArray[edytuj]

#include <File.au3>
_FileWriteFromArray ( $sFilePath, Const ByRef $aArray [, $iBase = Default [, $iUBound = Default [, $sDelimiter = "|"]]] )

Funkcja zapisuje zawartość tablice do pliku. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error<>0, 1 - błąd otwarcia pliku, 2 - $aArray nie jest tablicą, 3 - błąd zapisu pliku, 4 - tablica jest więcej niż 2-wymiarowa, 5 - nindeks początkowy jest większa niż parametr $iUbound).

$sFilePath - nazwa pliku wyjściowego (ewentualnie ze ścieżką dostępu)

$aArray - tablica z danymi do zapisu

$iBase - początkowy indeks komórki od którego będą zapisywane dane (domyślnie 0)

$iUBound - końcowy indeks komórki do którego będą zapisywane dane (domyślnie do końca tablicy)

$sDelimiter - ogranicznik dla tablic 2-wymiarowych (domyślnie pionowa kreska "|")

Przykład:

#include <File.au3>

$aScriptDir = _FileListToArray(@ScriptDir)
_FileWriteFromArray("plik_testowy.txt", $aScriptDir, 1)

ShellExecute("plik_testowy.txt")


_FileWriteLog[edytuj]

#include <File.au3>
_FileWriteLog ( $sLogPath, $sLogMsg [, $iFlag = -1] )

Funkcja zapisuje bieżącą datę, czas i określony tekst w pliku dziennika. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (makro @error<>0, 1 - błąd otwarcia pliku, 2 - błąd zapisu pliku).

$sLogPath - nazwa pliku wyjściowego (ewentualnie ze ścieżką dostępu), lub uchwyt zwrócony przez FileOpen().

$sLogMsg - zapisywany tekst

$iFlag - domyślna wartość -1 oznacza, że $sLogMsg będzie dopisywany na końcu pliku, inna wartość, że na początku

Przykład:

#include <File.au3>

_FileWriteLog("plik_testowy.log", "AutoIt")

ShellExecute("plik_testowy.log")


_ReplaceStringInFile[edytuj]

#include <File.au3>
_ReplaceStringInFile ( $sFilePath, $sSearchString, $sReplaceString [, $iCaseSensitive = 0 [, $iOccurance = 1]] )


Odczyt pliku tekstowego[edytuj]

_FileReadToArray[edytuj]

#include <File.au3>
_FileReadToArray ( $sFilePath, ByRef $vReturn [, $iFlags = $FRTA_COUNT [, $sDelimiter = ""]] )

Funkcja wczytuje określony plik do tablicy 1D lub 2D. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd. Makro @error przyjmuje jedną z wyszczególnionych wartości:

1 - błąd podczas otwierania pliku
2 - nie można podzielić pliku
3 - linie plików mają różne numery pól (tylko jeśli nie ustawiono flagi $FRTA_INTARRAYS)
4 - nie znaleziono żadnych ograniczników (tylko jeśli nie ustawiono flagi $FRTA_INTARRAYS)

$sFilePath - plik tekstowy do wydruku

$vReturn - nazwa zmiennej, w której przez referencję zostanie zapisana tablica wyników

$iFlags - $FRTA_NOCOUNT (0) - tablica jest oparta na 0, użyj UBound(), aby uzyskać rozmiar, $FRTA_COUNT (1) - liczba tablic w pierwszym elemencie. (domyślny), $FRTA_INTARRAYS (2) - Tworzenie "tablicy tablic", $FRTA_ENTIRESPLIT (4) - Użyj całego łańcucha separatora jako punktu podziału (domyślnie każdy znak definiuje punkt podziału),

$sDelimiter - służy do dalszego podziału każdej linii pliku - np. wczytywanie plików CSV do tablicy 2D

UWAGA: Jeśli nie określono separatora, funkcja zwraca tablicę 1D z każdym elementem zawierającym linię zakończoną znakiem końca linii (@CR, @LF lub @CRLF).

_FileCountLines[edytuj]

#include <File.au3>
_FileCountLines ( $sFilePath )

Funkcja zwraca ilość wierszy w pliku tekstowym, lub 0 gdy wystąpił błąd (@error=1 plik nie istnieje lub nie można go otworzyć).

$sFilePath - nazwa pliku tekstowego (ewentualnie ze ścieżką dostępu)

Przykład podający ilość wierszy uruchomionego skryptu:

#include <File.au3>

$iCountLines = _FileCountLines(@ScriptFullPath)
MsgBox(64, "_FileCountLines:", "W pliku jest " & $iCountLines & " wierszy.")

;ten skrypt ma 6 wierszy


Drukowanie pliku tekstowego[edytuj]

_FilePrint[edytuj]

#include <File.au3>
_FilePrint ( $sFilePath [, $iShow = @SW_HIDE] )

Funkcja drukuje zwykły plik tekstowy. Zwraca 1 gdy sukces, lub 0 gdy wystąpił błąd (@error <> 0).

$sFilePath - plik tekstowy do wydruku

$iShow - określa status okna dialogowego drukarki (domyślnie okno jest ukryte)


Katalog plików i folderów, ścieżki[edytuj]

_FileListToArray[edytuj]

#include <File.au3>
_FileListToArray ( $sFilePath [, $sFilter = "*" [, $iFlag = $FLTA_FILESFOLDERS [, $bReturnPath = False]]] )

Funkcja zwraca jednowymiarową tablicę z katalogiem plików i/lub folderów. Jeżeli wystąpił błąd @error<>0 (1 - folder nie istnieje, lub jest uszkodzony, 2 - niewłaściwa wartość $sFilter, 3 - niewłaściwa wartość $iFlag, 4 - nie znaleziono plików).

Zwracana tablica zawiera:

$aArray[0] = ilość plików / folderów
$aArray[1] = pierwszy plik / folder
$aArray[2] = drugi plik / folder
$aArray[3] = trzeci plik / folder
          ...
$aArray[n] = m-ty plik / folder

$sFilePath - folder, z którego ma być wygenerowany katalog plików / folderów

$sFilter - filtr nazw plików / folderów, można używać wieloznaczników * i ? (wildcards)

$iFlag - określa co ma być zwracane ($FLTA_FILESFOLDERS (0) - (domyślne) pliki i foldery, $FLTA_FILES (1) - tylko pliki, $FLTA_FOLDERS (2) - tylko foldery),

$bReturnPath - True oznacza zwrócenie pełnej ścieżki dostępu, False (domyślnie) tylko nazwa pliku / folderu

Przykład:

#include <File.au3>

$aFileList = _FileListToArray(@ScriptDir)
_ArrayDisplay($aFileList, "Wszystkie foldery i pliki")

$aFileList = _FileListToArray(@ScriptDir, "*.au3", 1)
_ArrayDisplay($aFileList, "Pliki *.au3")

$aFileList = _FileListToArray(@ScriptDir, Default, 2, True)
_ArrayDisplay($aFileList, "Foldery z pełną ścieką")


_FileListToArrayRec[edytuj]

#include <File.au3>
_FileListToArrayRec ( $sFilePath [, $sMask = "*" [, $iReturn = $FLTAR_FILESFOLDERS [, $iRecur = $FLTAR_NORECUR [, $iSort = $FLTAR_NOSORT [, $iReturnPath = $FLTAR_RELPATH]]]]] )

Funkcja zwraca jednowymiarową tablicę z katalogiem plików i/lub folderów. Zwracana tablica zawiera:

$aArray[0] = ilość plików / folderów
$aArray[1] = pierwszy plik / folder
$aArray[2] = drugi plik / folder
$aArray[3] = trzeci plik / folder
          ...
$aArray[n] = m-ty plik / folder

Jeżeli wystąpił błąd zwracany jest pusty string, makro @error = 1, a makro @extended przyjmuje jedną z następujących wartości:

1 - nie można odnaleźć ścieżki lub ścieżka nieprawidłowa
2 - nieprawidłowy parametr dołączający
3 - nieprawidłowy parametr wykluczający
4 - nieprawidłowy parametr wykluczający foldery
5 - nieprawidłowy parametr $iReturn
6 - nieprawidłowy parametr $iRecur
7 - nieprawidłowy parametr $iSort
8 - nieprawidłowy parametr $iReturnPath
9 - nie znaleziono plików / folderów

$sFilePath - folder, z którego ma być wygenerowany katalog plików / folderów

$sMask - filtr nazw plików / folderów, można używać wieloznaczników * i ? (wildcards)

$iReturn - określa co ma być zwracane: $FLTA_FILESFOLDERS (0) - pliki i foldery, $FLTA_FILES (1) - tylko pliki, $FLTA_FOLDERS (2) - tylko foldery. Dodanie jednej lub więcej z następujących wartości powoduje pominięcie plików i folderów o określonych atrybutach: + $FLTAR_NOHIDDEN (4) - ukryte, + $FLTAR_NOSYSTEM (8) - systemowe, + $FLTAR_NOLINK (16) - linki.

$iRecur - określa, czy należy szukać rekurencyjnie w podfolderach i na jakim poziomie: $ FLTAR_NORECUR (0) - nie szuka w podfolderach (domyślne), $ FLTAR_RECUR (1) - szuka we wszystkich podfolderach (nieograniczona rekursja), liczba ujemna - szukaj\ w podfolderach do określonej głębokości

$iSort - sortowanie wyników w kolejności alfabetycznej i głębokości: $FLTAR_NOSORT (0) - nie sortowane (domyślne), $FLTAR_SORT (1) - posortowane, $FLTAR_FASTSORT (2) - posortowane szybszym algorytmem (wymaga NTFS i nie daje gwarancji pełnej poprawności)

$iReturnPath - określa co ma być zapamiętane jako rezultat: $FLTAR_NOPATH (0) - tylko nazwy plików / folderów, $FLTAR_RELPATH (1) - ścieżka względna (domyślne), $FLTAR_FULLPATH (2) - ścieżka bezwzględna (pełna)


_PathFull[edytuj]

#include <File.au3>
_PathFull ( $sRelativePath [, $sBasePath = @WorkingDir] )


_PathGetRelative[edytuj]

#include <File.au3>
_PathGetRelative ( $sFrom, $sTo )


_PathMake[edytuj]

#include <File.au3>
_PathMake ( $sDrive, $sDir, $sFileName, $sExtension )


_PathSplit[edytuj]

#include <File.au3>
_PathSplit ( $sFilePath, ByRef $sDrive, ByRef $sDir, ByRef $sFileName, ByRef $sExtension )


_TempFile[edytuj]

#include <File.au3>
_TempFile ( [$sDirectoryName = @TempDir [, $sFilePrefix = "~" [, $sFileExtension = ".tmp" [, $iRandomLength = 7]]]] )