Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kopiowanie plikow
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam

Zrobilem sobie taka funkcje do kopiowania plikow :

  1. public function copyFiles($dir,$filename) {
  2. $array = file($filename);
  3. if (is_dir($dir)) {
  4. if ($handle = opendir($dir)) {
  5. while (($file = readdir($handle)) !== false) {
  6. if($file!='..' and $file!='.') {
  7. //foreach($array as $val) {
  8. for($i=0; $i<10; $i++) {
  9. if($file == $array[$i]) {
  10. copy($file, 'MySpamIndex/'.$file);
  11. }
  12. }
  13. }
  14. }
  15. closedir($handle);
  16. }
  17. }
  18. }


gdzie $dir , to jest sciezka do katalogu ktory zawiera pliki do skopiowania, a $filename to jest nazwa pliku ktory zawiera nazwy plikow ktore powinny zostac skopiowane.

No i teraz jesli nazwa pliku jest taka sama jak nazwa zmiennej pochodzącej z pliku tekstowego to kopiuj plik od danej nazwie do innego katalogu , czyli :
  1. if($file == $array[$i]) {
  2. copy($file, 'MySpamIndex/'.$file);
  3. }


No ale pozniej zagladam do tego katalogu a tam pusto.....napewno jakies nazwy plikow sie pokrywaja......
marcio
Zakladajac ze nazwy plikow w pliku podanym jako argument masz w takiej postaci:

Cytat
plik.txt

plik2.txt

plik3.txt


  1.  
  2. if($file!='..' and $file!='.') {
  3. //foreach($array as $val) {
  4.   foreach($array as $line) {
  5.   if($file == $line) {
  6.  
  7. if(file_exists('MySpamIndex/'.$file)) unlink('MySpamIndex/'.$file);
  8. copy($file, 'MySpamIndex/'.$file);
  9. }
  10. }
  11. }
  12.  
  13.  
  14.  
  15.  
  16.  


Dlaczego for() z 10 loop?

W pliku masz tylko 10 nazw plikow do skopiowania?Co jesli bedzie ich wiecej, chyba ze jest to stala liczba.




Ale i tak nie rozumiem jak ma dzialac ten kod, ma wczytac nazwy plikow z jakies pliku potem wczytac wszystkie pliki z danego katalogu porownac nazwy z pliku z tymi z tych katalogow i jesli sa takie same skopiowac plik?




Wolfie
dokladnie tak wlasnie ma dzialac ten kod,

petla for ma 10 tylko dla celow testowych, normalnie jak widzisz jest foreach, zas array ma 75 tys plikow, wiec nie bede testowal na wszystkich plikach przeciez,

Problem rozwiazalem, funkcja file() pobierala z pliku nazwy razem z niewidocznyn znakiem "\n", napisalem wlasna funkcje :

  1. public function getFilenameArray($filename) {
  2. $array = explode("\n", file_get_contents($filename));
  3. return $array;
  4. }


I teraz wszystko smiga smile.gif
marcio
Zamiast pisac wlasna funkcje trzeba bylo za pomoca str_replace() zamienic znaki nowej lini na puste znaki ale to i tak nie ma znaczenia grunt ze dziala.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.