Jump to content
Sign in to follow this  
Bernardo Vieira

Como encontrar um ficheiro no disco

Recommended Posts

Bernardo Vieira

Bom, antes de mais eu tenho a duvida sobre como devo fazer. É assim, eu li que para Windows eu posso usar FindFirstFile, usei e funcionou e FindNextFile para procurar os seguintes e deu certo, mas so consegui isso na pasta onde o ficheiro esta, nao sei como defenir um caminho! outra coisa é, eu queria criar de forma a usar em linux, ou seja, eu li que para windows posso usar as funcoes que referi, para linux teria de ser opendir, readdir, essas coisas assim! e li noutro sitio que podia usar a livraria boost! Bem, o que me recomendam? Como posso encontrar um ficheiro no disco somente digitando o nome dele e o programa busca em todas as pastas? Alguém me pode dar uma pequena luz?

desde já obrigado

e o codigo que eu criei foi este

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void _tmain()
{
  WIN32_FIND_DATA dados;
  HANDLE ficheiro;
  BOOL WINAPI saida;
  ficheiro= FindFirstFile(TEXT("*.*"), &dados);
  _tprintf (TEXT("O primeiro ficheiro chamase %s\n"),dados.cFileName);
  for(int x=0;x!=15;x++) {
  saida = FindNextFile(ficheiro,&dados);
  if (saida == 0)
  {
	 _tprintf (TEXT("Nada"));
  }
  else {
	 _tprintf (TEXT("O proximo fixheiro chamase %s\n"),dados.cFileName);
  }
  }
  FindClose(ficheiro);
  system("pause");
}

Edited by Bernardo Vieira

Share this post


Link to post
Share on other sites
HappyHippyHippo

como bem disseste, se queres linux e windows, ou usas uma biblioteca que te abstrai disso como o boost ou terás mesmo de ter códigos diferentes para cada um.

se queres pesquisar em todo o computador por um ficheiro, terás de a fazer em todos os directórios, um a um, de maneira em que sempre que encontras um directório o terás de pesquisar também. agora a maneira como o fazes pode ser como entenderes, num modelo de Breadth First Search ou Depth First Search ...

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Bernardo Vieira

como bem disseste, se queres linux e windows, ou usas uma biblioteca que te abstrai disso como o boost ou terás mesmo de ter códigos diferentes para cada um.

se queres pesquisar em todo o computador por um ficheiro, terás de a fazer em todos os directórios, um a um, de maneira em que sempre que encontras um directório o terás de pesquisar também. agora a maneira como o fazes pode ser como entenderes, num modelo de Breadth First Search ou Depth First Search ...

na forma como procuro eu pensei, tava com problemas em detectar quando era directorio ou nao, mas ao obter os atributos do ficheiro posso saber se é diretorio, portanto isso ta resolvido. E nao conhecia esses metodos "Breadth First Search ou Depth First Search" mas na minha cabeça tinha uma teoria mais ou menos igual a Breadth First Search

quer dizer entao que se quiser ficar livre de complicacoes tenho mesmo de usar o boost certo ? esta vida é tao injusta xD

(enquanto isso eu consegui um codigo, so que la está, funciona para windows :| )

mas bom, muito obrigado :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.