rendered paste bodypackage y2e1;
import java.io.*;
import java.net.*;
import java.util.*;
public class RSSReader {
public static void main(String[] args){
ArrayList<String> feedList = new ArrayList<String>();
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("<link>"))
feedList.add(fileString);
fileString = outputFile.readLine(); // <-- reads null O_o
}
}
while(inputString != null){
write = true;
if(feedList.size() != 0 && inputString.contains("<item>")){
long temp = outputFile.getFilePointer();
String strTemp = br.readLine();
while(!inputString.contains("</item>") && write){
strTemp = br.readLine();
if(strTemp.contains("<link>") && 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 :
<?xml version="1.0"?>
<rss version="2.0">
<channel>
the second outputFile.readLine() should therefore not be null, yet it is every time :s