Jump to content

Recommended Posts

Posted (edited)

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
Posted (edited)

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"

Posted

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.

Posted (edited)

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

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