For IO in lab3, consider passing an InputStreamReader to the BufferedReader. Here is a chunk of working code that demonstrates it use: import java.io.*; // for IO Streams import java.net.*; // for URL import java.util.*; // for StringTokenizer BufferedReader inFile; InputStream instream; InputStreamReader instreamread; String tempString=""; StringTokenizer st = null; try{ //u was a string defined from a paramter uber = new URL(u); } catch(MalformedURLException eURL) {System.out.print("hosed");} try{ instream = uber.openStream(); } catch(IOException netE){System.out.print("openSteam hosed "+netE +"\n");} instreamread = new InputStreamReader(instream); inFile = new BufferedReader(instreamread); try{ while(tempString != null) { tempString = inFile.readLine(); if (tempString != null) st = new StringTokenizer(tempString); else //end of file return; //right about here you can do whatever you want with the line //or StringTokenizer } } catch(IOException read){System.out.print("readline hosed");} While this code may be ugly and have not real meaningful error messages, it works.