Heim  >  Artikel  >  Backend-Entwicklung  >  So überprüfen Sie, ob eine Datei in PHP vorhanden ist

So überprüfen Sie, ob eine Datei in PHP vorhanden ist

PHPz
PHPzOriginal
2023-08-26 12:29:231718Durchsuche

So überprüfen Sie, ob eine Datei in PHP vorhanden ist

Oft müssen Sie Dateien in PHP verschieben oder einige Daten darin speichern. In beiden Fällen kann es uns helfen, unerwartetes Verhalten zu vermeiden, wenn wir im Voraus wissen, ob die Datei vorhanden ist.

PHP verfügt über eine Vielzahl von Funktionen zur Bearbeitung verschiedener Arten von Abfragen im Zusammenhang mit Dateien. In diesem Tutorial gebe ich Ihnen einen kurzen Überblick über alle diese Funktionen, damit Sie diejenige auswählen können, die am besten zu Ihrer Situation passt.

Es ist wichtig zu prüfen, ob eine Datei vorhanden ist

In vielen Fällen kann es wichtig sein, zu prüfen, ob eine Datei vorhanden ist, bevor andere Vorgänge ausgeführt werden. Nehmen wir an, Ihre Website ermöglicht es Benutzern, Bilddateien für den späteren Zugriff auf Ihren Server hochzuladen. Man kann davon ausgehen, dass immer die Möglichkeit von Dateinamenkonflikten besteht, wenn viele Benutzer Ihren Dienst nutzen, um häufig mehrere Dateien hochzuladen.

In diesem Fall ist es wichtig zu prüfen, ob an dem Ort, an dem Sie die zuletzt hochgeladene Datei des Benutzers speichern möchten, bereits eine andere Datei vorhanden ist. Anschließend können Sie Maßnahmen wie die Umbenennung der Datei in einen anderen Namen oder die Information der Benutzer darüber, dass ihr Upload die vorhandene Datei überschreibt, ergreifen.

Betrachten wir ein anderes Szenario, in dem Sie Daten an eine Datei in PHP anhängen sollten. Wenn die Datei, die Sie erstellt haben, um alle Ihre Daten zu schreiben, aus irgendeinem Grund gelöscht wird, erstellt eine Funktion wie file_put_contents() einfach eine neue Datei mit dem angegebenen Namen und speichert Ihre Daten in der neu erstellten Datei. Dies kann in manchen Fällen wünschenswert sein, ist jedoch nicht immer der Fall. Wenn Sie also bereits damit rechnen, dass die Datei vorhanden ist, bevor Sie mit dem Schreiben von Daten beginnen, ist es sinnvoll, vorab zu prüfen, ob die Datei vorhanden ist.

Überprüfen Sie, ob die Datei in PHP vorhanden ist

Sie können drei verschiedene Funktionen verwenden, um zu prüfen, ob eine Datei in PHP existiert.

Die erste Funktion ist file_exists(). Diese Funktion akzeptiert einen Parameter, nämlich den Pfad, in dem sich die Datei befindet. Denken Sie daran, dass für vorhandene Dateien und Verzeichnisse „true“ zurückgegeben wird. Dies kann für Ihre Bedürfnisse ausreichend sein oder auch nicht.

Wenn Sie sicherstellen möchten, dass der von Ihnen angegebene Pfad auf eine Datei und nicht auf ein Verzeichnis verweist, sollten Sie die Funktion is_file() 函数。同样,您可以使用 is_dir() verwenden, um zu überprüfen, ob der von Ihnen angegebene Pfad existiert und auf ein Verzeichnis verweist.

<?php

$name = "squares.txt";
$directory = "squares.zip";

if(file_exists($name)) {
    echo 'The file "'.$name.'" exists.';
}

if(is_file($name)) {
    echo '"'.$name.'" is indeed a file.';
}

if(is_dir($directory)) {
    echo '"'.$directory.'" turned out to be a directory.';
}

?>
Ausgabe
The file "squares.txt" exists.
"squares.txt" is indeed a file.
"squares.zip" turned out to be a directory.

Im obigen Beispiel habe ich eines der Verzeichnisse absichtlich squares.zip genannt, um zu zeigen, dass es wichtig ist, eigene Prüfungen durchzuführen und nicht davon auszugehen, dass der angegebene Dateiname tatsächlich ein Dateiname oder ein Verzeichnis ist.

Es ist wichtig, sich daran zu erinnern, is_file()is_dir() 都将返回 false, dass der Pfad tatsächlich existiert, auch wenn das übergeordnete Verzeichnis nicht über die richtigen Berechtigungen verfügt.

Überprüfen Sie, ob die Datei existiert und lesbar und beschreibbar ist

Zwei weitere Funktionen mit dem Namen is_read()is_writable() können verwendet werden, um zusätzlich zur Prüfung, ob sie existiert, zusätzliche Informationen über die Datei abzurufen.

Wie der Name schon sagt, überprüft die is_read() 函数将检查两件事:第一,文件或目录确实存在,第二,文件可读。同样, is_writable()-Funktion auch zwei Dinge: ob die Datei oder das Verzeichnis existiert und beschreibbar ist.

<?php

$name = "squares.txt";

if(is_readable($name)) {
    echo 'We can read "'.$name.'".';
}

if(is_writable($name)) {
    echo 'We can also modify the contents of "'.$name.'".';
}

?>
Ausgabe
We can read "squares.txt". 
We can also modify the contents of "squares.txt".

Ich empfehle Ihnen, bei der Interpretation der Rückgabewerte dieser beiden Funktionen vorsichtig zu sein. Wenn is_read() beispielsweise „false“ zurückgibt, denken wir zunächst, dass die von uns abgefragte Datei nicht lesbar ist. Allerdings gibt diese Funktion auch dann false zurück, wenn die Datei nicht existiert. Es ist wichtig, diesen Aspekt dieser Funktionen immer im Auge zu behalten.

Vorsicht vor zwischengespeicherten Ergebnissen

Rückgabewerte, die durch den Aufruf aller fünf Funktionen zurückgegeben werden, nämlich file_exists()is_file()is_dir()is_read()is_writeable()—已缓存。这意味着重复调用函数(例如 is_file(), is_file(), is_dir(),

und is_writeable() – Zwischengespeichert. Das bedeutet, dass wiederholte Aufrufe einer Funktion (z. B. is_file()) möglicherweise veraltete Ergebnisse liefern.

PHP speichert die Ergebnisse dieser Funktionen zwischen, um die Leistung zu verbessern. Dadurch wird sichergestellt, dass mehrere Aufrufe, die dieselbe Datei abfragen, schneller ausgeführt werden. Selbst wenn sich die Dateien während der Skriptausführung ändern, bleiben ihre Rückgabewerte jedoch gleich.

is_file() 将继续返回 false,但一旦创建文件,就会开始返回 true。另一方面,对于第一次调用期间存在的文件,该函数将继续返回 trueCache-Ergebnisse nur für Dateien, die bereits vorhanden sind. Das bedeutet, dass für eine Datei, die nicht existiert, die Funktion

aufgerufen wird, auch wenn die Datei gelöscht wurde.

<?php

$name = "squares.txt";

if(is_file($name)) {
    echo '"'.$name.'" is indeed a file.';
}


// Manually delete the file while script waits.
sleep(5);

if(is_file($name)) {
    echo '"'.$name.'" is indeed a file.';
}

clearstatcache();

if(is_file($name)) {
    echo '"'.$name.'" is indeed a file.';
} else {
    echo 'The file probably no longer exists.';
}

?>
is_file() 仍将返回 true。不过,在再次查询文件是否存在之前,只需调用 clearstatcache()Wenn Sie den obigen Codeausschnitt für eine tatsächlich vorhandene Datei ausführen und sie dann manuell löschen, während das Skript wartet, erhalten Sie durch den Aufruf von

die richtigen Ergebnisse. 🎜 输出
"squares.txt" is indeed a file.
"squares.txt" is indeed a file.
The file probably no longer exists.

要记住的另一件事是,调用 unlink() 会自动清除缓存,因此稍后调用 is_file() 等函数时会得到新的结果。

最终想法

本教程首先介绍了检查 PHP 中文件是否存在的重要性。之后,我们了解了可用于检查 PHP 中文件是否存在的不同函数。我们还了解了其中一些功能可能具有的优点和缺点。

正如我在最后提到的,PHP 将缓存其中一些函数调用的结果以提高性能。因此,请确保在对这些文件执行重要操作之前清除缓存。

Das obige ist der detaillierte Inhalt vonSo überprüfen Sie, ob eine Datei in PHP vorhanden ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

In Verbindung stehende Artikel

Mehr sehen