Archivos de broma con C#

Iniciado por Meta, 12 Diciembre 2009, 00:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

Me ha enviado un archivo en CMD de broma que me llena los PenDrive de 8 GB a tope. En mi caso le quiero devolver la jugada en plan broma y lo único que se me ocurre es esto. Tarda en escribirse, pero él lo hacía más rapido  que mi método. ¿Alguien le sale mejor?

Código (csharp) [Seleccionar]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO; // No olvidar desde aquí.

namespace CMD_Serie
{
    class Program
    {
        private const string FILE_NAME = "Archivo.txt";

        static void Main(string[] args)
        {
            if (File.Exists(FILE_NAME))
            {
                Console.WriteLine("{0} ya existe.", FILE_NAME);
                Console.ReadKey();
                return;
            }
            using (StreamWriter sw = File.CreateText(FILE_NAME))
            {
                for (long i = 1; i <= 999999999999999999; i++)
                {
                    Console.WriteLine(i);
                    sw.WriteLine(i);
                    //sw.Close();
                }
            }
        }
    }
}


Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

raul338

y si en vez de escribir un archivo, copias tu mismo ejecutable?? Usa File.Copy y Application.StartUpPath + ExeName  ;D

Meta

#2
Jejejejej ¿Qué logras exactamente con eso?  ;D ;-)

Ideas las puedes sacar de aquí, sobre los archivos.
http://msdn.microsoft.com/es-es/library/system.io.streamwriter%28VS.80%29.aspx

Lo bueno sería que no se viece la ventana mientas se le llena el disco duro o pendriver.



Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

seba123neo

jeje me acuerdo cuando hacia esto, con pascal  :P, pero lo hacia de la siguiente forma, en vez de hacer un For como estas haciendo, lo hacia con un bucle que no terminaba, un do while...y como condición le ponia 1=3 , como el 1 nunca va a ser igual a 3 entonces el bucle seguia indefinidamente y se trababa toda la pc , casi usando todo el recurso al 100%, y si no te dabas cuenta en 1 minuto te podia consumir el disco de 80GB.... te lo aseguro  :P. y para colmo le ponia que inice con windows y no habia manera de pararlo, se iniciaba el widnows y empezaba a escribir como loco...como veran yo tuve mis momentos de furia.. :P
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

isseu

Cita de: seba123neo en 12 Diciembre 2009, 04:39 AM
jeje me acuerdo cuando hacia esto, con pascal  :P, pero lo hacia de la siguiente forma, en vez de hacer un For como estas haciendo, lo hacia con un bucle que no terminaba, un do while
Cierto, pero yo haria algo asi:
Código (csharp) [Seleccionar]

while (true)
{
    Console.WriteLine(i);
    sw.WriteLine(i);
}

raul338

#5
Claro, pero si llenan la consola nunca se tildaria, un formualrio invisible (o mejor, un proyecto Windows sin formularios ;-) y en algun momento se tendria que cerrar el archivo a escribirse no?

Cita de: Meta en 12 Diciembre 2009, 01:04 AM
Jejejejej ¿Qué logras exactamente con eso?  ;D ;-)

Seria interminable y bloquearia la PC. Imagina, Copias 3 veces tu propio ejectuable (esta bien, son 3kb, agregale algun recurso "pesado") y luego ejecuta cada uno de los 3 y vuelves a copiarte y vuelves a ejecutarlos y vuelves a copiarte ;-) (pasas de 1 a 3, de 3 a 9, de 9 a 27, de 27 a .... ya sabes xD)
Y para que no te tire excepcion de archivos duplicados, agrega un numero id al ejecutable, y cuando lo copias le sumas uno, cuando se ejecuta obten su propio numero a partir de su nombre, si no tiene es por que es el primero ;-)

[D4N93R]

No tengo aun VS, me ha dado de todo bajarlo jaja mi conexión anda lenta.. Espero complile xD

Pruebalo asi jajaj debería escribir hasta que se llene el disco/unidad/o lo que sea jaja de un exception y termine el ciclo =P


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO; // No olvidar desde aquí.

namespace CMD_Serie
{
    class Program
    {
        private const string FILE_NAME = "Archivo.txt";

        static void Main(string[] args)
        {
            using (StreamWriter sw = File.CreateText(FILE_NAME))
            {
                while(true)
                {
                   try
                   {
                        sw.WriteLine("Hola viteh!!");
                   }
                   catch { break; // =P}
                   
                }
            }
        }
    }
}


Meta

Está buena las ideas. ME dieron este nuevo. Este si que va rápido, aunque el de arriba dice qeu en un minuto ya tiene 80GB, eso es imposible, cuando lo vea me lo creo, ni con el último i7 o el nuevo i9.

Código (csharp) [Seleccionar]

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics.CodeAnalysis;

namespace CMD_serie
{
    class Program
    {
        private const string FILE_NAME = "Archivo.txt";
        public static BinaryWriter sw;

        public static void data(IAsyncResult x)
        {
            sw.BaseStream.EndWrite(x);
        }

        static void Main(string[] args)
        {
            byte[] datos = Encoding.ASCII.GetBytes((new string('A', 45000000)));

            if (File.Exists(FILE_NAME))
            {
                Console.WriteLine("{0} ya existe.", FILE_NAME);
                Console.ReadKey();
                return;
            }
            FileStream fs = new FileStream(FILE_NAME, FileMode.Create);

            sw = new BinaryWriter(fs);

            for (long i = 1; i <= 30; i++)  // En lugar de escribir 9999999999999999 pocos bytes
            {                                          // Mejor escribo 45000000 de letras A 30 veces
                sw.BaseStream.Flush();
                sw.BaseStream.BeginWrite(datos, 0, datos.Length, new AsyncCallback(data), sw);//sw.Close();                   
            }
            sw.Close();
        }

    }
}


raul338
Ahora lo pillo, eres muy listo.  ;-) ;-) ;-)

Lo del truco del

Código (csharp) [Seleccionar]

while (true)
{
    Console.WriteLine(i);
    sw.WriteLine(i);
}


no había caído. Está bueno también.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

seba123neo

si, creo que exagere un poco con el tiempo y el tamaño, pero en una PC buena tenes por lo menos 6GB en un minuto, y si es una i7 o i9 entonces tenemos por lo menos 10GB por minuto.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Meta

jejje, aún así es mucho para una broma, 10GB por minuto.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/