hola a migos buen dia, hoy les traigo una inquietud y es que no encuentro como hacer funcionar este codigo.
string ruta = Environment.CurrentDirectory + "\\" + "r.rar";
RarArchive archive = RarArchive.Open(ruta);
foreach (RarArchiveEntry item in archive.Entries)
{
string path = Path.Combine(Path.GetFileName(item.FilePath));
item.WriteToFile(path);
}
el error que me arroja es:
System.NullReferenceException: 'Referencia a objeto no establecida como instancia de un objeto.' (Eto ocurre al entrar al foreach en la instancia archive.Entries)
Es obio, el error esta en esta declaracion :
RarArchive archive = RarArchive.Open(ruta);
Para trabajar tienes que declarar una nueva instancia. Te explico con codigo vb.net.
Basicamente declaras una nueva instancia de RarArchive , usando (
new) , quedaria asi :
Dim ruta As String = Environment.CurrentDirectory & "\" & "r.rar"
Dim archiveInstance As new RarArchive
Dim archive = archiveInstance.Open(ruta)
For Each item As RarArchiveEntry In archive.Entries
Dim path As String = Path.Combine(Path.GetFileName(item.FilePath))
item.WriteToFile(path)
Next
No se que tipo devuelve
.Open(ruta) en caso de que sea string. ponedlo en la variable archive.
Asi quedaria tu code : {
string ruta = Environment.CurrentDirectory + @"\" + "r.rar";
RarArchive archiveInstance = new RarArchive();
var archive = archiveInstance.Open(ruta);
foreach (RarArchiveEntry item in archive.Entries)
{
string path = Path.Combine(Path.GetFileName(item.FilePath));
item.WriteToFile(path);
}
}