Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Ich nenne es mal EMM Sortierprogramm

Gatzi

Super Elite User
Registriert
29. April 2014
Beiträge
2.950
Lösungen
1
Reaktionspunkte
16.178
Punkte
383
Hallo zusammen, schaut mal drauf und geb euere Meinung dazu ab ...

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

namespace ddr
{
internal class Program
{
private static void Main(string[] args)
{
if (args.Length != 2)
{
Program.ShowSyntax();
}
else
{
string str1 = args[0];
string path1 = args[1];
if (!Directory.Exists(str1))
Console.WriteLine(string.Format("Quellpfad: '{0}' nicht vorhanden", (object) str1));
else if (!Directory.Exists(path1))
{
Console.WriteLine(string.Format("Zielpfad: '{0}' nicht vorhanden", (object) path1));
}
else
{
IEnumerable<string> source = Directory.EnumerateFiles(str1);
Console.WriteLine(string.Format("{0} Datei(en) gefunden.", (object) source.Count<string>()));
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
Console.WriteLine("");
foreach (string str2 in source)
{
string str3 = Path.Combine(path1, ((FileSystemInfo) new FileInfo(str2)).get_Name());
Console.Write(((FileSystemInfo) new FileInfo(str2)).get_Name());
StreamReader streamReader = File.OpenText(str2);
StreamWriter text = File.CreateText(str3);
Dictionary<int, string> dictionary = new Dictionary<int, string>();
int num = 0;
while (true)
{
string str4 = ((TextReader) streamReader).ReadLine();
if (str4 != null)
{
int hashCode = str4.Substring(20).GetHashCode();
if (!dictionary.ContainsKey(hashCode))
{
((TextWriter) text).WriteLine(str4);
dictionary.Add(hashCode, "");
}
if (num % 100000 == 0)
Console.Write(".");
++num;
}
else
break;
}
Console.WriteLine("Fertig");
((TextWriter) text).Flush();
((TextWriter) text).Close();
((TextReader) streamReader).Close();
File.Delete(str2);
}
stopwatch.Stop();
Console.WriteLine(string.Format("{0}s", (object) ((double) stopwatch.ElapsedMilliseconds / 1000.0)));
}
}
}

public static void ShowSyntax()
{
Console.WriteLine("Syntax: ddr [Quellpfad] [Zielpfad]");
}

public static void GenerateTestFile()
{
int num = 100;
Random random = new Random();
StringBuilder stringBuilder = new StringBuilder();
List<string> stringList = new List<string>();
StreamWriter text = File.CreateText(Path.Combine(Directory.GetCurrentDirectory(), "generate.txt"));
for (int index1 = 0; index1 < 4000000; ++index1)
{
for (int index2 = 0; index2 < num; ++index2)
stringBuilder.Append(random.Next(1, 9).ToString());
stringList.Add(stringBuilder.ToString());
stringBuilder.Clear();
}
for (int index = 0; index < 40000000; ++index)
{
((TextWriter) text).WriteLine(stringList[random.Next(0, 4000000)]);
if (index % 1000 == 0)
((TextWriter) text).Flush();
}
((TextWriter) text).Close();
}
}
}
 
Mal davon abgesehen dass ich noch nicht weiß was das Programm eigentlich tun soll, seit wann hat "FileInfo" die Methode "get_Name()"? Wahrscheinlich möchtest du einfach auf das Attribut "Name" zugreifen oder?
 
ich durchsuche damit meine geloggten EMM und sortiere die doppelten aus ...
 
aber nicht in der Masse und der Geschwindigkeit!
 
Zuletzt bearbeitet von einem Moderator:
Kommt darauf an was man unter masse und geschwindigkeit versteht
ich durchsuche 3GB an emms nach einer serial
und brauche dazu vielleicht max. 2 min
klar wenn das jemand zu langsam ist und es schneller geht
dann ist das bei mir halt langsam
aber damit kann ich gut leben
 
es geht mir ja auch nicht um vergleichbare Programme, sondern um ein Feedback der Programmierer unter euch ...

was schnell ist, ist wohl subjektiv ... mir gingen die Editoren jedenfalls auf die Nerven - und nein mein Rechner ist nicht zu langsam!
 
Also Doppelte kann man mit awk auf der Konsole direkt aussortieren und mit grep durchsuchen.
 
das war der Plan!

wollte hier nicht über Alternativen diskutieren.
 
Es bleibt aber dabei, dass es das "get_Name()" in der Klasse FileInfo nicht gibt. Entweder die Proberty "Name" oder "FullName"... oder du bist mit irgendeinem .NET-Framework unterwegs, was ich noch nicht habe :D
 
so, sorry... bin selber noch nicht ganz so fit. Natürlich ist die Proberty Name richtig. get_Name() ist beim Dekompilieren auf der Arbeit draus geworden.

habe .Net 4.5 Framework verwendet

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

namespace ddr
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 2)
{
ShowSyntax();
return;
}

string sourcePath = args[0];
string destPath = args[1];

if (!Directory.Exists(sourcePath))
{
Console.WriteLine($"Quellpfad: '{sourcePath}' nicht vorhanden");
return;
}

if (!Directory.Exists(destPath))
{
Console.WriteLine($"Zielpfad: '{destPath}' nicht vorhanden");
return;
}

var fileList = Directory.EnumerateFiles(sourcePath);

Console.WriteLine($"{fileList.Count()} Datei(en) gefunden.");

// Zeitmessung
Stopwatch sw = new Stopwatch();
sw.Start();

Console.WriteLine("");
foreach (var sourceFileName in fileList)
{
string destFileName = Path.Combine(destPath,new FileInfo(sourceFileName).Name);

Console.Write(new FileInfo(sourceFileName).Name);

StreamReader reader = File.OpenText(sourceFileName);
StreamWriter writer = File.CreateText(destFileName);

Dictionary<int, string> list = new Dictionary<int, string>();

int i = 0;
while (true)
{
string line = reader.ReadLine();
if (line == null)
break;

int hash = line.Substring(20).GetHashCode();
if (!list.ContainsKey(hash))
{
writer.WriteLine(line);
list.Add(hash, "");
}

if (i % 100000 == 0)
Console.Write(".");

i++;
}

Console.WriteLine("Fertig");

writer.Flush();
writer.Close();
reader.Close();

File.Delete(sourceFileName);
}

sw.Stop();
System.Console.WriteLine($"{sw.ElapsedMilliseconds/1000.0}s");
}
public static void ShowSyntax()
{
Console.WriteLine("Syntax: ddr [Quellpfad] [Zielpfad]");
}
}
}

Gesendet von iPhone mit Tapatalk
 
Zuletzt bearbeitet:
Zurück
Oben