Autor
|
Tema: Archivos de broma con C# (Leído 5,718 veces)
|
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? 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.
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
y si en vez de escribir un archivo, copias tu mismo ejecutable?? Usa File.Copy y Application.StartUpPath + ExeName
|
|
|
En línea
|
|
|
|
|
seba123neo
|
jeje me acuerdo cuando hacia esto, con pascal , 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 . 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..
|
|
|
En línea
|
|
|
|
isseu
Desconectado
Mensajes: 325
°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,
|
jeje me acuerdo cuando hacia esto, con pascal , 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: while (true) { Console.WriteLine(i); sw.WriteLine(i); }
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
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? Jejejejej ¿Qué logras exactamente con eso? 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
|
|
« Última modificación: 12 Diciembre 2009, 15:05 pm por raul338 »
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
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} } } } } }
|
|
|
En línea
|
|
|
|
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. 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(); } } }
raul338Ahora lo pillo, eres muy listo. Lo del truco del while (true) { Console.WriteLine(i); sw.WriteLine(i); }
no había caído. Está bueno también.
|
|
|
En línea
|
|
|
|
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.
|
|
|
En línea
|
|
|
|
Meta
|
jejje, aún así es mucho para una broma, 10GB por minuto.
|
|
|
En línea
|
|
|
|
|
|