C datei suchen und kopieren

Tr3x

Lieutenant
Registriert
Feb. 2007
Beiträge
650
hallo
ich versuche gerade mit c in win xp eine bestimmte datei zu suchen und diese an einen bestmmten ort zu kopieren.
ich habe da an eine schleife. problem is wie mach ich das eigentlich?
für ideen literatur etc wäre ich echt dankbar

lg
 
Du wirst nicht drum herum kommen das Quellfile einzulesen und an der Zielstelle ein neues File zu erzeugen und dort den Inhalt reinzukopieren.
 
CopyFile(Ex) tut auch nichts anderes als auslesen und in ne neue Datei schreiben. Außerdem ist die Funktion rein Windows-spezifisch.
 
CopyFile(Ex) tut auch nichts anderes als auslesen und in ne neue Datei schreiben.
Mit dem kleinen Unterschied, dass es sich noch um die richtigen Berechtigungen bemüht und was Windows sonst noch alles an die Dateien dranhängt, abgesehen von den security attributes.
 
Zuletzt bearbeitet:
ghorst schrieb:
Mit dem kleinen Unterschied, dass es sich noch um die richtigen Berechtigungen bemüht und was Windows sonst noch alles an die Dateien dranhängt, abgesehen von den security attributes.

Und wie dein Vorredner IceMatrix bereits sagte, ist die rein Windows-Spezifisch ;)
 
Ich würde fread() bzw fwrite() benutzen. Die sind Teil der Standardbibliothek und damit portabel.
 
@toeffi was natürlich ein echtes Problem ist, wenn er ein Programm für Windows XP schreibt...
Er muss sowieso für das Durchsuchen des Dateibaums auf plattformspezifische Lösungen ausweichen. Man muss auch für das normale Kopieren bei einem NTFS zwingend plattformspezifisch schreiben, da einem sonst die Substreams flöten gehen. Ganz abgesehen davon, dass ich persönlich der Meinung bin, dass auch die sonstigen Attribute eigentlich mit kopiert werden sollten.

Daher: Wenn portabel sein soll: Eine Implementierung für Win32 und eine zweite für POSIX.

Oder man benutzt eine Lib, die den ganze Spaß für einen erledigt. Nur mit std-libc ist eine ziemlich ungeschickte Idee.
 
Zuletzt bearbeitet:
sodala ich hab bisher folgendes:

Code:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

using namespace std;


int main()
{
    printf("process sart!\n");

FILE *fp;
fp=fopen("c://Users/BENUTZER/Desktop/text.txt", "r");

if(fp == NULL)
    {
	printf("Datei konnte NICHT geoeffnet werden.\n");
    }
    else
        {
        printf("Datei konnte geoeffnet werden.\n");
        fclose(fp);
        }
CopyFile("c://Users/BENUTZER/Desktop/text.txt","c://Users/ViFire/Desktop/abc.txt",FALSE);

    return 0;
}

frage. da ich das auf unterschiedlichen rechnern ausführen möchte. gibt es auch unterschiedliche benutzernamen. gibt es ne möglichkeit diese zu umgehen. das ich ihm sag ja nimm einfach den ordner xy der gleich im order von BENUTZER ist?
 
Zuletzt bearbeitet:
1) der path separator unter windows ist \ und nicht /
2) wieso öffnest du die datei? für CopyFile() ist das unerheblich
3) du kannst das aktuelle homeverzeichnis vor dem kopieren vom betriebssystem erfragen. -> SHGetFolderLocation
 
ich öffne sie damit ich beim testen seh ob er sie überhaupt gefunden hat.
wie würde das SHGetFolderLocation denn als code funktionieren?
 
Zurück
Oben