使用ASP或PHP检查2个目录中是否存在文件

时间:2011-02-15 04:31:40

标签: file-io

我正在寻找一种比较2个目录的方法,以查看两者中是否存在文件。我想要做的是删除其中一个目录中的文件(如果两个目录中都存在。

我可以使用 ASP PHP

示例:

/devices/1001
/devices/1002
/devices/1003
/devices/1004
/devices/1005

/disabled/1001
/disabled/1002
/disabled/1003

因为 / disabled / 中存在1001, 1002, 1003,我想从 / devices / 中删除它们,只留下1004, 1005 /装置/

5 个答案:

答案 0 :(得分:5)

使用scandir()获取每个目录中的文件名数组,然后使用array_intersect()查找给定的任何其他参数中存在的第一个数组的元素。

http://au.php.net/manual/en/function.scandir.php

http://au.php.net/manual/en/function.array-intersect.php

<?php
$devices = scandir('/i/auth/devices/');
$disabled = scandir('/i/auth/disabled/');

foreach(array_intersect($devices, $disabled) as $file) {
    if ($file == '.' || $file == '..')
        continue;
    unlink('/i/auth/devices/'.$file);
}

作为一项功能应用,包括检查目录是否有效:

<?php
function removeDuplicateFiles($removeFrom, $compareTo) {
    $removeFromDir = realpath($removeFrom);
    if ($removeFromDir === false)
        die("Invalid remove from directory: $removeFrom");

    $compareToDir = realpath($compareTo);
    if ($compareToDir === false)
        die("Invalid compare to directory: $compareTo");

    $devices = scandir($removeFromDir);
    $disabled = scandir($compareToDir);

    foreach(array_intersect($devices, $disabled) as $file) {
        if ($file == '.' || $file == '..')
            continue;
        unlink($removeFromDir.DIRECTORY_SEPARATOR.$file);
    }
}

removeDuplicateFiles('/i/auth/devices/', '/i/auth/disabled/');

答案 1 :(得分:1)

使用PHP非常容易 - 在本例中我们设置了两个基本目录和文件名...这可能很容易成为foreach()循环中的数组。然后我们检查两个目录,看它是否确实存在于每个目录中。如果是这样,我们从第一个删除。这可以很容易地修改为从第二个删除。

见下文:

<?php 

$filename = 'foo.html';
$dir1 = '/var/www/';
$dir2 = '/var/etc/';
if(file_exists($dir1 . $filename) && file_exists($dir2 . $filename)){
  unlink($dir1 . $filename);
}

答案 2 :(得分:1)

if ($handle = opendir('/disabled/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            unlink('/devices/' . $file);            
        }
    }
    closedir($handle);
}

答案 3 :(得分:0)

在php中,使用它来检查文件是否存在....它将返回true或false ...

file_exists(relative file_path)

答案 4 :(得分:0)

对于设备中的每个文件,使用禁用的路径和设备中的文件名检查是否存在禁用状态。

<%

    Set fso = server.createobject("Scripting.FileSystemObject")

    Set devices   = fso.getfolder(server.mappath("/i/auth/devices/"))
    Set disabledpath  = server.mappath("/i/auth/disabled/")

    For each devicesfile in devices.files
        if directory.fileExists(disablepath & devicesfile.name ) Then 

            Response.Write " YES "
            Response.write directoryfile.name & "<br>"

        Else

            Response.Write " NO "
            Response.write directoryfile.name & "<br>"

        End if 
    Next    

%>