AutoIt/Pliki - funkcje obsługi
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]]]] )