The following piece of code reads a file and dumps the contents to standard output because we use System.out.println(). We could have written the contents to another file by opening another stream.
import java.io.*; public class DumpFile { // character(non-GUI) application public static void main(String args[]) { FileInputStream in = null; String line; // We need wrap this sensitive area of code with // try/catch block to catch any exceptions that // have occurred try { in = new FileInputStream(args[0]); } catch (Throwable e) { System.out.println("Usage: java DumpFile file"); System.exit(1); } DataInputStream dis = new DataInputStream(in); // End-of-File is -1, but in this case as long as the // string returned is not null, continue try { while ((line = dis.readLine()) != null) System.out.println(line); in.close(); } catch(IOException e) { System.out.println("I/O Error"); System.exit(1); } } }Outputting data to a file. Prints Hello World to a file specified by the second paramter. Very foolish and only useful as an example.
import java.io.*; public class OutputFile { public static void main(String args[]) { FileOutputStream out = null; // Attempt to open the file, if we can't display error // and quit try { out = new FileOutputStream(args[1]); } catch (Throwable e) { System.out.println("Error in opening file"); System.exit(1); } PrintStream ps = new PrintStream(out); try { ps.println("Hello World"); out.close(); } catch(IOException e) { System.out.println("I/O Error"); System.exit(1); } } }A basic CGI. The server must be either Solaris, Win95 or WinNT. Another common method is to read a HTML file and dump the contents to the standard output like DumpFile does. But this demostrates the concept of how CGIs work. Please read NCSA documentation on CGIs to learn more.
import java.io.*; public class BasicCGI { public static void main(String args[]) { // HTML files need this header System.out.println("Content-type: text/html"); System.out.println(); // Now you could read in a file and dump the contents System.out.println("<HTML><HEAD>"); System.out.println("<TITLE>Hello World</TITLE>"); System.out.println("</HEAD>"); // Body goes here System.out.println("</HTML>"); } }
Q:Can applets use I/O?
A:No. Applets are restricted to I/O to and from the server. The ony way to allow the applet to write to the client's side disk is for the user(client) to install special .class himself and modify the access rights
This simple example displays a button and with a click you goto to the tutorial
// The AWT package, applet package and networking package import java.awt.*; import java.applet.*; import java.net.*; public class URLTest extends Applet { URL u = null; // This applet may not work if used locally via file:// public void init() { setLayout(new BorderLayout()); } // Add a button that is centered when clicked goes to the // tutorial public void start() { add("Center", new Button("Go to Tutorial")); } // action is called when the button has been clicked public boolean action(Event evt, Object arg) { if("Go to Tutorial".equals(arg)) { // If there is an error in creating the URL, we will // set it to the default try { u = new URL("http://ugweb.cs.ualberta.ca/~nelson/java/AWT.Tutorial.html"); } catch(MalformedURLException u) { u = getDocumentBase(); showStatus("Error"); } // Uses the browser to display the // new document getAppletContext().showDocument(u); return true; } return false; } }
URL u = null; URLConnection uc = null; try { u = new URL("http://ugweb.cs.ualberta.ca/~nelson/java/AWT.Tutorial.html"); } catch(MalformedURLException e) { System.out.println("Error in given URL"); return; } // Now that you have the URL, open the connection try { uc = u.openConnection(); } catch(IOException e) { System.out.println("Error in opening URLConnection"); return; }After opening the connection, what do you do? You now can read and write using InputStream/OutputStream. Both similar to FileInputStream and FileOutputStream...
InputStream is = uc.getInputStream(); OutputStream os = uc.getOutputStream();
Q: What else is there to know?
A: Quite a bit. You should read up on http://(the http protocol, URLs/URIs and TCP/IP(sockets).Q: Do I really need to the above?
A: No. But if want more than simple, connect and read/write a file from a server type applications, you will need to.