Create numbered files in order

0

Well, I'm trying to do something that creates numbered files, for example:

001.txt , 002.txt , 003.txt [...] 200.txt ...

That is, if file 001.txt exists, create 002.txt, and so on.

Is it possible?

    
asked by anonymous 06.08.2017 / 20:17

1 answer

1

After seeing so much negativity in the other 2 comments (including mine) I decided to make a recursive function for this question.

This function can have 2 or 3 different uses and I think one of them is the answer to your question.

1st use - You can check in a range ex: [0..10] if all files exist, if any of them does not exist, it will be created.

function createFiles($manyfiles = 0, $path, $indice = 0, $count = 0){
$num = 0;
$count++;

for ($i = $indice; $i < $manyfiles; $i++) { 
    $namePathFile = $path . sprintf('%03d', $num) . ".txt";

    // verifica se é a primeira ve que entra no loop
    if($i == 0){

        // verifica se o primeiro ficheiro existe
        if(!file_exists($namePathFile)){

            echo "Criar primeiro arquivo se não existe<br>";
            $file = fopen($namePathFile, "w");

            // vamos fechar o ficheiro para não ficar em memoria
            fclose($file);

            // chamamos novamente a função mas retirando uma posição de cada
            return createFiles($manyfiles - 1, $path, $i, $count - 1);
        }
    }

    $num ++;
    //reformata o nome usando a variavel count
    $namePathFile = $path . sprintf('%03d', $count) . ".txt";

    // verifica se o ficheiro atual existe
    if(!file_exists($namePathFile)){

        echo "criar arquivo " . $namePathFile . " <br>";


        $arquivo = fopen($namePathFile, "w") or die("Impossivel abrir o arquivo!");
        fclose($arquivo);

        //Cchama a função novamente retirando o valor que ja passou.
        return createFiles($manyfiles - $num, $path, $num, $count);
    }else{
        return createFiles($manyfiles - $num , $path, 0, $count);
    }

}

}

2nd use - you have 3 sample files:

001.txt 002.txt 004.txt

This function will add missing file 003.txt and more number of files (manyFiles) less missing files added ( 003.txt ).

function createFiles($manyfiles = 0, $path, $indice = 0, $count = 0){
    $num = 0;
    $count++;

    for ($i = $indice; $i < $manyfiles; $i++) { 
        $namePathFile = $path . sprintf('%03d', $num) . ".txt";

        // verifica se é a primeira ve que entra no loop
        if($i == 0){

            // verifica se o primeiro ficheiro existe
            if(!file_exists($namePathFile)){

                echo "Criar primeiro arquivo se não existe<br>";
                $file = fopen($namePathFile, "w");

                // vamos fechar o ficheiro para não ficar em memoria
                fclose($file);

                // chamamos novamente a função mas retirando uma posição de cada
                return createFiles($manyfiles - 1, $path, $i, $count - 1);
            }
        }

        $num ++;
        //reformata o nome usando a variavel count
        $namePathFile = $path . sprintf('%03d', $count) . ".txt";

        // verifica se o ficheiro atual existe
        if(!file_exists($namePathFile)){

            echo "criar arquivo " . $namePathFile . " <br>";


            $arquivo = fopen($namePathFile, "w") or die("Impossivel abrir o arquivo!");
            fclose($arquivo);

            //Cchama a função novamente retirando o valor que ja passou.
            return createFiles($manyfiles - $num, $path, $num, $count);
        }else{
            return createFiles($manyfiles , $path, 0, $count);
        }

    }

}

3rd Use - you have 3 sample files:

001.txt 002.txt 004.txt

This function will create the file 003.txt and in the next execution (if all the files in order exist) will add the file 005.txt

function createFiles($manyfiles = 0, $path, $indice = 0, $count = 0){
    $num = 0;
    $count++;

    for ($i = $indice; $i <= $manyfiles; $i++) { 
        $namePathFile = $path . sprintf('%03d', $num) . ".txt";

        // verifica se é a primeira ve que entra no loop
        if($i == 0){

            // verifica se o primeiro ficheiro existe
            if(!file_exists($namePathFile)){
                //echo "Criar primeiro arquivo se não existe<br>";
                $file = fopen($namePathFile, "w");
                // vamos fechar o ficheiro para não ficar em memoria
                fclose($file);
                return createFiles($manyfiles - 1, $path, $i, $count - 1);
            }
        }
        //reformata o nome usando a variavel count
        $namePathFile = $path . sprintf('%03d', $count ) . ".txt";

        // verifica se o ficheiro atual existe
        if(file_exists($namePathFile)){

            $num ++;

            echo "criar arquivo " . $namePathFile . " <br>";

            $arquivo = fopen($namePathFile, "w") or die("Impossivel abrir o arquivo!");
            fclose($arquivo);

            //Cchama a função novamente retirando o valor que ja passou.
            return createFiles($manyfiles - $num, $path, $num, $count);

        }else{
            $namePathFile = $path . sprintf('%03d', $count ) . ".txt";
            $arquivo = fopen($namePathFile, "w") or die("Impossivel abrir o arquivo!");
            fclose($arquivo);
            return;
        }

    }

}

To execute one of these functions, just 2 arguments, for example:

createFiles(10, 'ficheiros/');

I hope I have helped.

    
06.08.2017 / 23:42