using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Net; namespace CheckUserNames { class Program { static void Main(string[] args) { //Declare input and output file string InputFilePath = @"C:\b\input.txt"; string OutputFilePath = @"C:\b\output.txt"; //Read input file var input = new StreamReader(InputFilePath); string CurrentUsername; //Open output file for writing, overwrite if it already exists. //Change false to true to append instead of overwriting. var Output = new StreamWriter(OutputFilePath, false); Console.WriteLine("Reading users..."); //Read every line of the input file. while (!input.EndOfStream) { CurrentUsername = input.ReadLine(); //Check if username is available if (UserNameExists(CurrentUsername)) { Console.WriteLine("Username {0} exists", CurrentUsername); } else { Console.WriteLine("Username {0} doesn't exist", CurrentUsername); //Output to file if it is Output.WriteLine(CurrentUsername); } } //Cleanup Output.Close(); input.Close(); Console.WriteLine("Done. Press Enter to exit..."); Console.ReadLine(); } /// /// Check to see if a username exists /// /// The username /// True if the username exists. False if not. private static bool UserNameExists(string username) { try { string url = "http://www.reddit.com/user/" + username; HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "HEAD"; request.Timeout = 2000; // I've noticed it can take very long to get a timeout. So I set it to two seconds. HttpWebResponse response = request.GetResponse() as HttpWebResponse; return (response.StatusCode == HttpStatusCode.OK); } catch { return false; } } } }