User since
2003-11-29
155
Artikel
BenutzerIn
Hi Community -
ich möchte einfach nur eine Datei kopieren. Dabei habe ich es schon versucht, die Datei zu öffnen und in einem String "zwischenzuspeichern", jedoch hat das leider nicht den gewünschten Erfolg gebracht.
Ich habe auch schon einmal gelesen, dass es dafür das Modul File::Copy gibt, konnte die Dokumentation allerdings nicht finden.
Habt ihr vielleicht eine Idee für dieses Problem?
ciao .. anti
achso: ist es schlimm wenn die Datei nebenbei von einem anderen Programm bearbeitet wird?
User since
2003-08-19
44
Artikel
BenutzerIn
hi, es gibt da mehrere möglichkeiten:
1: mit File::Copy
use File::Copy;
copy($oldfile, $newfile);
2: alles selber machen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open(IN, "< $oldfile") or die "can't open $oldfile: $!";
open(OUT, "> $newfile") or die "can't open $newfile: $!";
$blksize = (stat IN)[11] || 16384; # preferred block size?
while ($len = sysread IN, $buf, $blksize) {
if (!defined $len) {
next if $! =~ /^Interrupted/; # ^Z and fg
die "System read error: $!\n";
}
$offset = 0;
while ($len) { # Handle partial writes.
defined($written = syswrite OUT, $buf, $len, $offset)
or die "System write error: $!\n";
$len -= $written;
$offset += $written;
};
}
close(IN);
close(OUT);
3: mit systembefehlen
system("cp $oldfile $newfile"); # unix
system("copy $oldfile $newfile"); # dos
hilft das?
gruß math55
User since
2003-08-04
14371
Artikel
ModeratorIn
wobei die erste Methode die beste ist: Plattformunabhängig und schnell
User since
2003-11-29
155
Artikel
BenutzerIn
Danke für die schnelle Antwort - es hat super funktioniert!!
Jetzt gibt es nur noch ein Problem (wahrscheinlich O.T.): Bei der Datei handelt es sich um ein Video. Da das Video ständig aufgezeichnet wird, fehlt die Endekennung beim kopieren und es ist somit nicht "ansehbar". Weiß vielleicht jemand wie die Endekennung von Videos lautet, damit ich diese manuell anhängen kann (MPEG4 Video-Verfahren) oder muss ich dazu erst den Standard wälzen - oder bin ich mit meiner Vermutung gar auf dem Holzweg?
ciao .. anti\n\n
<!--EDIT|anti|1073509326-->
User since
2003-08-04
7321
Artikel
ModeratorIn
hmm...
eigentlich sind mpeg etcpp. doch stream formate (genau wie jpg)
man kann einen vollständige film einfach in der mitte trennen und hat dann zwei filme die einfach funzen!
User since
2003-08-04
2036
Artikel
BenutzerIn
Ich wuerde auf jeden Fall die erste Variante verwenden...
Gruss
User since
2003-08-04
5871
Artikel
ModeratorIn
Zur zweiten Variante: Wenn man die schon nutzt, dann wohl besser vorher auf binmode setzen...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
12208
Artikel
Admin1
[quote=anti,07.01.2004, 21:16]Ich habe auch schon einmal gelesen, dass es dafür das Modul File::Copy gibt, konnte die Dokumentation allerdings nicht finden.[/quote]
dokumentation findest du immer (ja, wirklich immer) und zu jedem modul
mittels der eingabe
perldoc Modul::Name
auf der kommandozeile.
User since
2003-08-06
2246
Artikel
ModeratorIn
... außer es ist nicht installiert. Dann ist es meistauf dem
File::Copy zu finden.
File::Copy erfüllt also beide Kriterien. :cool:
User since
2003-08-04
12208
Artikel
Admin1
[quote=Relais,08.01.2004, 14:47]... außer es ist nicht installiert.[/quote]
das wäre wirklich traurig. File::Copy ist standard seit perl5.004_05.
wenn jemand eine ältere version hat, tut er mir sowieso leid.