Jump to content
goldspy98

Dúvida sobre obtenção de nomes de arquivos

Recommended Posts

goldspy98

Olá, eu sou novo aqui na comunidade por isso se estiver a postar na área errada peço desculpa.

O meu problema é o seguinte estou fazendo um programa com o objectivo de conseguir obter todos os files de um determinado directorio e seus Md5 para um file .txt ele realmente faz isso mas quando põem o caminho do file no .txt fica o caminho todo (ex: C:\User\user\Desktop\Teste\pasta1\arquivo1.exe) e eu só queria que no file aparece-se (ex: \pasta1\arquivo1.exe).

PS: O diretorio delecionado seria a pasta ...\Teste

PS2: Estou a usar o Visual Studio 2012

Isto foi o que já fiz (não sei se tudo está correto pois sou novo na área de programação) :)

Public Class Form1
Private Function getFileMd5(ByVal filePath As String) As String
 Dim File() As Byte = System.IO.File.ReadAllBytes(filePath)
 Dim Md5 As New MD5CryptoServiceProvider()
 Dim byteHash() As Byte = Md5.ComputeHash(File)
 Return Convert.ToBase64String(byteHash)
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
	 ListFiles(FolderBrowserDialog1.SelectedPath)
 End If
End Sub
Private Sub ListFiles(ByVal folderPath As String)
 ListBox1.Items.Clear()
 Dim numArq As Integer = 0
 Dim fileNames As String() = System.IO.Directory.GetFiles(folderPath, "*", IO.SearchOption.AllDirectories)
 Dim filehash As New System.IO.StreamWriter(System.IO.Directory.GetCurrentDirectory & "\filehash.txt")
 For Each fileName As String In fileNames
	 ListBox1.Items.Add(fileName)
	 numArq = (numArq + 1)
 Next
 filehash.WriteLine(numArq)
 For Each fileName As String In fileNames
	 filehash.WriteLine(fileName)
	 filehash.WriteLine(getFileMd5(fileName))
 Next
 filehash.Close()
 MsgBox("Arquivo criado com sucesso", MsgBoxStyle.Information, "Aviso")
End Sub
End Class

Se alguém me pude-se ajudar eu agradecia muito é que sou ainda iniciante em programação e tenho tido varias dificuldades e gostava muito de terminar este programa.

Edited by ribeiro55

Share this post


Link to post
Share on other sites
ribeiro55

O que tu pretendes tem de ser conseguido "manualmente". Não há forma de se adivinhar os níveis que tu queres mostrar e nem vão garantidamente existir sempre níveis suficientes para ser um corte rígido.

Terás que jogar com os "\", por exemplo:

Private Function Apanhar2Niveis(Caminho As String) As String
	Dim tmp() As String = Caminho.Split("\")
	If tmp.Length > 3 Then
		Dim ret As String = "..."
		For i As Integer = tmp.Length - 3 To tmp.Length - 1
			ret &= "\" & tmp(i)
		Next
		Return ret
	End If

	Return Caminho
End Function

Edited by ribeiro55

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
goldspy98

Obrigado ribeiro55 desculpe o tempo que demorei a responder mas é que demorei algum tempo para conseguir perceber o código que deixou :) mas funcionou lindamente consegui fazer o que queria.

Share this post


Link to post
Share on other sites
goldspy98

Olá de novo, para não estar a criar um novo tópico vou usar este. (Se não houver problema) :)

Eu já consegui fazer o programa obter os files todos com o endereço como cria mas agora eu cria alterar as \ dos endereços para estas / alguém tem alguma sugestão?

Edited by goldspy98

Share this post


Link to post
Share on other sites
ribeiro55
Caminho = Caminho.Replace("\","/")

??


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
goldspy98

Muito obrigado ribeiro55 é mais simples do que pensava :) é que eu tinha procurado na Internet em vários sítios e tudo o que encontrei não tinha percebido é que sou novo em VB.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.