Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: rigorvzla en 13 Octubre 2020, 11:59 am



Título: Descomprimir RAR (Nunrar)
Publicado por: rigorvzla en 13 Octubre 2020, 11:59 am
hola a migos buen dia, hoy les traigo una inquietud y es que no encuentro como hacer funcionar este codigo.

Código:
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)

y no eh dado de como solucionarlo, si alguien sabe , espero pueda ayudarme.

PD. gracias de antemano, y en caso de conocer otra api gratuita para descomprimir RAR y de facil uso sin problemas , espero puedan hacerla conocer, gracias.


Título: Re: Descomprimir RAR (Nunrar)
Publicado por: **Aincrad** en 13 Octubre 2020, 14:51 pm
hola a migos buen dia, hoy les traigo una inquietud y es que no encuentro como hacer funcionar este codigo.

Código:
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 :

Código:
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 :

Código
  1.   Dim ruta As String = Environment.CurrentDirectory & "\" & "r.rar"
  2.  
  3.    Dim archiveInstance As new RarArchive
  4.     Dim archive = archiveInstance.Open(ruta)
  5.  
  6.    For Each item As RarArchiveEntry In archive.Entries
  7.        Dim path As String = Path.Combine(Path.GetFileName(item.FilePath))
  8.        item.WriteToFile(path)
  9.    Next

No se que tipo devuelve .Open(ruta) en caso de que sea string. ponedlo en la variable archive.



Asi quedaria tu code :

Código:
{
    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);
    }
}



Título: Re: Descomprimir RAR (Nunrar)
Publicado por: rigorvzla en 14 Octubre 2020, 12:33 pm
hola de nuevo, gracias por la respuesta pero, eso que se me ocurrio por ser "obvio" no resulto, por alguna razon me tilda error (visual studios), lo peor es que en el ejemplo del api sale eso tal cual, por eso ni idea de si realmente funcione