package y2e1; import java.io.*; import java.net.*; import java.util.*; public class RSSReader { public static void main(String[] args){ ArrayList feedList = new ArrayList(); String out = "sampleRSS.txt"; Boolean write = true; try{ RandomAccessFile outputFile = new RandomAccessFile(out, "rw"); //Open necessary connections to receive data from file URL rssUrl = new URL(args[0]); URLConnection c = rssUrl.openConnection(); c.connect(); InputStream i = c.getInputStream(); InputStreamReader isr = new InputStreamReader(i); BufferedReader br = new BufferedReader(isr); String inputString; inputString = br.readLine(); // append file if already exists & add current links to arraylist if(outputFile.length() >0){ String fileString; fileString = outputFile.readLine(); // <-- reads first line perfectly. outputFile.seek(outputFile.length()); while(fileString != null){ if(fileString.contains("")) feedList.add(fileString); fileString = outputFile.readLine(); // <-- reads null O_o } } while(inputString != null){ write = true; if(feedList.size() != 0 && inputString.contains("")){ long temp = outputFile.getFilePointer(); String strTemp = br.readLine(); while(!inputString.contains("") && write){ strTemp = br.readLine(); if(strTemp.contains("") && feedList.contains(strTemp)) write = false; } outputFile.seek(temp); } if(write){ outputFile.writeBytes(inputString); outputFile.writeBytes("\n"); } inputString = br.readLine(); } //Close streams and report success i.close(); System.out.println("Operation Complete"); } catch(FileNotFoundException e){System.err.println(e.getMessage());} catch(MalformedURLException e){System.err.println(e.getMessage());} catch(IOException e){System.err.print("Data Not Received From Location: ");System.err.println(e.getMessage());}} } first few lines in outputFile : the second outputFile.readLine() should therefore not be null, yet it is every time :s