Newsgroup: it.comp.programmare.win32
Titolo: conoscere i file in una directory...

ciao, scusate le domanda banali...
1)devo sapere quanti file ci sono dentro una directory e copiarli uno per
uno
dentro un'altra directory ...
chi può aiutarmi???
esiste un'api o una sh... che fa al caso mio???
2)una volta che ho scoperto quanti file ci sono nella cartella, come faccio
a sapere quali sono binari e quali ascii???
devo forse controllare le estensioni, ovvero se sono .doc e .txt sono ascii
e viceversa???
sto scrivendo codice in c e mi servirebbe in questo linguaggio...
ciao e grazie in anticipo

CiaoCapoccione finalmente de se risente,
per ora ho trovato solo questa per copiare:
BOOL CopyFile
(
  LPCTSTR lpExistingFileName, // name of an existing file
  LPCTSTR lpNewFileName,      // name of new file
  BOOL bFailIfExists          // operation if file exists
);
Parameters
  lpExistingFileName
  [in] Pointer to a null-terminated string that specifies the name of an
existing file.
  Windows NT/2000 or later: In the ANSI version of this function, the name
is limited to MAX_PATH characters. To extend this limit to nearly 32,000
wide characters, call the Unicode version of the function and prepend "\\?\"
to the path. For more information, see File Name Conventions.
  Windows 95/98/Me: This string must not exceed MAX_PATH characters.
  lpNewFileName
  [in] Pointer to a null-terminated string that specifies the name of the
new file.
  Windows NT/2000 or later: In the ANSI version of this function, the name
is limited to MAX_PATH characters. To extend this limit to nearly 32,000
wide characters, call the Unicode version of the function and prepend "\\?\"
to the path. For more information, see File Name Conventions.
  Windows 95/98/Me: This string must not exceed MAX_PATH characters.
  bFailIfExists
  [in] Specifies how this operation is to proceed if a file of the same name
as that specified by lpNewFileName already exists. If this parameter is TRUE
and the new file already exists, the function fails. If this parameter is
FALSE and the new file already exists, the function overwrites the existing
file and succeeds.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.
Ciao Ste.

Rieccomi,
per vedere quanti ce ne sono ho trovato qualcosa:
HANDLE hFind;
int cont=0;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
hFind=FindFirstFile("c:\\*.*",&dataFind);
while(hFind!=INVALID_HANDLE_VALUE &&bMoreFiles==TRUE)
{
    /*Controlli se si tratta di un file*/
    if (dataFind.dwFileAttributes==FILE_ATTRIBUTE_ARCHIVE)
    {
        cont++
    }
    /*Vedi se ce ne sono altri*/
    bMoreFiles=FindNextFile(hFind,&dataFind);
}

 ciao e grazie in anticipo
L'estensione di un file non garantisce di per se' alcuna informazione sul
contenuto.
Per avere informazioni sul contenuto prova ad usare GetBinaryType che
permette di determinare (in base al contenuto) se il file e' eseguibile (e
in questo caso di quale tipo) oppure no.

 BOOL CopyFile
    ...
SHFileOperation e` piu` potente e generale.
Alex


1) Le API che cerhi sono HANDLE =
FindFirstFile(LPCTSTR,LPWIN32_FIND_DATA) e BOOL =
FindNextFile(HANDLE,LPWIN32_FIND_DATA).
La struttura WIN32_FIND_DATA conterrà tutte le informazioni che ti
servono sul file (vedi MSDN per maggiori informazioni).
2) A che ti serve sapere se sono ASCII o binari? Per una operazione di
copiatura puoi dichiarare puntatori void (bruttissimi, lo so) e caricare
il contenuto dei file al loro interno. Se invece ti interessa il testo
leggibile, li carichi direttamente in un array di char.

Ma più lenta e pesante...
Lorenzo