Currently showing src/net/jtank/io/FileUtil.java
package net.jtank.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.StringReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.File;

import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.*;



import java.util.List;
import java.util.ArrayList;

import java.net.URL;
import java.net.MalformedURLException;
import java.net.URLConnection;

public class FileUtil {
	
	public static BufferedReader getFileSpecificBufferedReader (String filename) throws IOException {
		BufferedReader br = null;

		// Cater for applets, which will have http:// or file:/ in their paths.
		if (filename.lastIndexOf(":/") == -1) {
			br = new BufferedReader(new InputStreamReader( new FileInputStream(filename), "UTF-8"));
		} else {
			try {
				//Get the BufferedReader to read an URL
				URL url = new URL(filename);

				URLConnection conn = null;
				InputStreamReader data = null;
				conn = url.openConnection();
				conn.connect();
				br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

				//br = new BufferedReader(new FileReader(new File(new URI(filename))));
			} catch (MalformedURLException e) {
			}
		}

		return br;
	}
	
		public static String fileChooser (Component component, String title, FileFilter filter, String workingDir, String defaultExt) {

		JFileChooser fileChooser = new JFileChooser();
		fileChooser.setCurrentDirectory(new File (workingDir ));
		try {
		    fileChooser.addChoosableFileFilter(filter);
		} catch (NullPointerException e) {
		}
		fileChooser.setDialogTitle(title);
		int result = fileChooser.showOpenDialog(component);
		String sep = System.getProperty("file.separator");

		if(result == JFileChooser.APPROVE_OPTION) {
            String addition = "";
            if (defaultExt != null && fileChooser.getSelectedFile().getName().lastIndexOf(".") == -1) {
                addition = "." + defaultExt;
            }
			workingDir = fileChooser.getCurrentDirectory().toString();
            String tmp = fileChooser.getCurrentDirectory().getAbsolutePath()+sep + fileChooser.getSelectedFile().getName() + addition;
            System.out.println(tmp);
			//tmp = fileChooser.getCurrentDirectory().toString() +sep + fileChooser.getSelectedFile().getName() + addition;
			return tmp;
		} else {
			return null;
		}

	}
	
	    public static String getBaseDirectory () {

        try {
     	    File f = new File("");
    		String baseDirectory = f.getAbsolutePath() + "/";
            return baseDirectory;
        } catch (Exception e) {
            //this.getCodeBase().toString();
            return "";
        }

    }
	
	public static String getContents (BufferedReader br) throws IOException {
		if (br == null)
			throw new IOException ();

		String fileContents = "";
		String line = br.readLine();
		while (line != null) {
			fileContents += line + "\n";
			line = br.readLine();
		}
		
		return fileContents;
	}
	
	public static void writeFile(String filename, String text) throws IOException {
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "UTF-8"));
		bw.write(text);
		bw.close();		
	}

}
     

Total 120 Lines of Code.
Source code formatted using showsrc by William Denniss