Ir para o conteúdo
wizzuu

FilePath = onde a aplicação estiver

Mensagens Recomendadas

wizzuu

Boa tarde.

Ora bem, eu tenho um programa que usa vários campos, e uma listbox. Este programa está a guardar e retirar os dados de um ficheiro de texto, mas como é óbvio para ir buscar os dados ao ficheiro tive que definir o diretório.

Neste caso eu quero que este programa funcione noutros pc's.

logo, se eu passar só o .exe para outro pc, por exemplo, como faço para o diretório em que o ficheiro de texto vai estar, seja sempre o mesmo onde o .exe está?

Não sei se me fiz entender, mas por exemplo, imaginando que estou a definir o diretório do ficheiro de texto onde o programa vai buscar os dados :

Dim caminho As String = "C:\Teste\teste.txt"

o que tenho de escrever para esse caminho ser sempre o diretório onde o .exe está localizado.

Imaginando que tenho o .exe no ambiente de trabalho, abro, e o ficheiro de texto é criado ao lado do .exe.

é mais ou menos isso que quero.

Alguém me pode ajudar?

Obrigado,

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
wizzuu

Muito obrigado pela resposta.

Então como tenho de meter o código se eu quiser que o ficheiro se chame "teste.txt" , e que apareça na Application.StartupPath?

É por exemplo assim?

Dim caminho As String = Application.StartupPath & "social_base.txt"

Editado por wizzuu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
He B TeMy

Quase... mas convém usar o

Path.Combine(Application.StartupPath,"social_base.txt")

que é do namespace IO.

O porquê é pelo facto do erro que fizeste que muitos fazem e por alguma razão existe um metódo próprio para isso... o erro foi teres esquecido do "\" ou seja ficava assim:

 Dim caminho as String = Application.StartupPath & "\social_base.txt"

Mas usa o

Path.Combine

Editado por He B Te My

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
wizzuu

hmmm obrigado.

só mais uma pergunta,

With My.Computer.FileSystem 'Apagar o ficheiro original e mudar o nome do temporário para o original

.DeleteFile(caminho)

.RenameFile("C:\teste\social_base.tmp", "social_base.txt")

End With

Tendo assim, para dar o rename, meto à mesma

Path.Combine(Application.StartupPath,"social_base.txt")

? ou como posso fazer?

Editado por wizzuu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
He B TeMy

hmmm obrigado.

só mais uma pergunta,

With My.Computer.FileSystem 'Apagar o ficheiro original e mudar o nome do temporário para o original

.DeleteFile(caminho)

.RenameFile("C:\teste\social_base.tmp", "social_base.txt")

End With

Tendo assim, para dar o rename, meto à mesma

Path.Combine(Application.StartupPath,"social_base.txt")

? ou como posso fazer?

Claro que podes mas primeiro entende as coisas...

Path.Combine

só te junta caminhos... 2, 3 ou 4 dependendo do que precisares como está na documentação aqui , podes fazer o que quiseres com o caminho que crias depois... como te disse em cima:

Path.Combine("C:\Teste\PT,"novoficheiro.txt")

junta-te esses 2 caminhos dando-te de retorno uma string com os dois caminhos concatenados.

"C:\Teste\PT\novoficheiro.txt"

Quanto a FileSystem e qq outra coisa, começa a usar o namespace IO para essas funções.

podes fazer rename assim:

System.IO.File.Move("caminho original", "novo caminho")

Se meteres um caminho do mesmo diretório com diferente nome ele simplesmente muda o ficheiro de nome, que é o que queres. como diz também aqui.

usa

File.Delete("caminho")

para apagares qualquer ficheiro.

Editado por He B Te My

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Muryllo

Mas ... Desculpem-me por estar invadindo este tópico, uma coisa que eu não entendi é porque que você quer usar o Application.StartupPath ? Se seu programa for instalado na pasta "C:\Program Files (x86)\MeuPrograma" por exemplo ?

Não tem como um aplicativo sem permissões de Administrador escrever ou modificar lá dentro. A não ser que seja um serviço ou algo do tipo, não seria melhor usar o AppData ? Depende também do que você quer fazer ...

Abraços.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
wizzuu

Realmente tem razão. No appdata os programas são livres para editar ficheiros certo?

Nesse caso, como metia a criar os ficheiros na pasta AppData? Conseguindo guardar em todos os computadores claro.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
wizzuu

Environment.GetFolderPath(Environment.Specialfolder.Appdata)

Obrigado pela resposta.

Existem diferenças se eu usar esse código, ou este? Qual poderá ser mais viável de modo a que funcione noutros pc's?

Environ("LOCALAPPDATA") & "\social_base2.txt"

Editado por wizzuu

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
He B TeMy

O mais viável é o que eu postei, porque esse estás dependente das varíaveis do sistema que podem ser mudadas por aplicações.. e tu provavelmente queres 'Appdata' não 'LocalAppData'.

Mas já vi que não seguiste o meu conselho de Path.Combine ... :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
wizzuu

O mais viável é o que eu postei, porque esse estás dependente das varíaveis do sistema que podem ser mudadas por aplicações.. e tu provavelmente queres 'Appdata' não 'LocalAppData'.

Mas já vi que não seguiste o meu conselho de Path.Combine ... :D

Segui xD, e estava a funcionar perfeitamente. Mas depois pensei, imagina se a pessoa move a aplicação de sítio, e a inicia noutro lado. Os dados perdiam-se..

Assim se a guardar num lugar fixo como por exemplo desta forma que disseste, será tudo mais fácil tanto para mim como para o utilizador.

Obrigadão :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
He B TeMy

Que dados é que se perdiam? Não estou a entender.

Estou a ver foi que não percebeste o Path.Combine lol.

Última vez:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Appdata),"social_base2.txt")

Não foi difícil não?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vhdl22

Procuro alguém para me ajudar me VB 2010 para projeto de PAP, pago as explicações em Braga ou Vila Nova de Famalicão.

Se alguem tiver interessado que me mande email por favor hugo.vitor24@gmail.com

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.