To view this page, you should have the most recent Java installed
32-bit JRE (Java Runtime Environment) 1.8.0_20.
This Applet will run online in your browser, but it is a hybrid you
can also download, install and run it on your own machine as standalone
application. It will start and run faster if you do that. It will also
work safely even if you have disabled Java in your browser.
This Applet will help you write Java code. Instead of memorising the dozens of I/O
classes and methods, just select what you want to do, and let the amanuensis generate the
code, then paste it into your source. Please pass on bugs and suggestions for
improvement. The code is messy, but this just reflects the chaos in Oracle’s design of
java.io. It is a bit like doing jig-saw puzzles trying to find ways to fit the classes
together. The asymmetry is astounding.
The 2007-08-05 version was a major rewrite. There are
undoubtedly errors in the code it generates, though I can guarantee all code it generates
will at least compile. It is a huge program with fiendishly baroque interactions. It is
perhaps the most difficult to debug and proofread program I have ever written. Please
report any errors in the code in generates or suggestions for improvement. The most
likely errors is it will give you a roundabout way to do something that can be specified
The File I/O Amanuensis does not yet give you any help with the Java 1.4+
class or the java.nio classes: Buffer, ByteBuffer, ByteOrder, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, MappedByteBuffer or ShortBuffer.
Nio is particularly useful when you have:
little endian data.
large records of which you only need a few fields.
a need for high performance with non-blocking I/O to read many records at
Binary is a compact, machine-friendly, human-unintelligible format. For human readable
i/o, Java works with Strings of characters. You separately convert these to and from
internal binary format e.g. int. See the conversion Amanuensis for how.
Java Requirements and Troubleshooting
is a signed Java Applet (that can also be run as an application)
to File I/O Amanuensis.
You are welcome to install it on your own website.
If it does not work…
In the Java Control Panel security tab,
click Start ⇒ Control Panel ⇒
Programs ⇒ Java ⇒ Security, configure medium security
to allow self-signed and vanilla unsigned applets to run.
If medium is not available, or if Java security is blocking you from running the program,
configure high security
and add http://mindprod.com
to the Exception Site List at the bottom of the security tab.
Often problems can be fixed simply by clicking the reload button on your browser.
Make sure the Java in your browser is enabled in the security tab of the Java Control panel.
Click Start ⇒ Control Panel ⇒
Programs ⇒ Java ⇒ Security ⇒
Enable Java Content in the browser.
This signed Java Applet (that can also be run as an application)
needs 32-bit or 64-bit Java 1.7 or later.
For best results use the latest 1.8.0_20 Java.
It works under any operating system that supports Java
e.g. W2K XP W2003 Vista W2008 W7-32 W7-64 W8-32 W8-64 W2012 Linux LinuxARM LinuxX86 LinuxX64 Ubuntu Solaris SolarisSPARC SolarisSPARC64 SolarisX86 SolarisX64 OSX
You should see the Applet hybrid above looking much like this
If you don’t, the following hints should help you get it working:
For this Applet hybrid to work, you must click grant/accept
to give it permission to let you copy/paste.
If you refuse to grant permission, the program may crash with an inscrutable stack dump
on the console complaining about AccessController.checkPermission.
If the above Applet hybrid appears to freeze-up, click
Alt-Esc repeatedly to check for any buried permission dialog box.
If you have certificate troubles,
check the installed certificates
and remove or update any obsolete or suspected defective certificates.
The only certificate used by this program is mindprodcert2014dsa.cer.
Especially if this Applet hybrid has worked before, try clearing the browser cache and rebooting.
To ensure your Java is up to date, check with Wassup.
First, download it and run it as an application independent of your browser,
then run it online as an Applet to add the complication of your browser.
If the above Applet hybrid does not work,
check the Java console for error messages.
If the above Applet hybrid does not work, you might have better luck with the downloadable version available below.
If you are using Mac OS X and would like an improved Look and Feel,
download the QuaQua look & feel
UnZip the contained quaqua.jar
and install it in ~/Library/Java/Extensions
or one of the other ext dirs.
If you are using old versions of Microsoft Internet Explorer, try the latest version or another browser.
If you are using Microsoft Internet Explorer,
you must click to allow blocked content permission for Active X to run.
This also gives permission to Java to run.
Click the Information bar, and then click Allow blocked content.
Unfortunately, this also allows dangerous ActiveX code to run.
However, you must do this in order to get access to perfectly-safe Java Applets running in a sandbox.
This is part of Microsoft’s war on Java.
Use a different browser.
If you are using and older version Microsoft Internet Explorer, make sure the Java Plug-In SSV helper add-in is installed and enabled.
If it is not installed, try reinstalling the Java JRE.
Try upgrading to a more recent version of your browser,
or try a different browser e.g. Chrome, Firefox, SeaMonkey, Opera, Safari or Avant.
If you still can’t get the program working
click the red HELP button below for more detail.
If you can’t get the above Applet hybrid working
after trying the advice above and from the red HELP button below,
have bugs to report or ideas to improve the program or its documentation,
please send me an email at.
Don’t embed FileIO’s snippets directly into your programs. Encapsulate
them in small methods and use those. Your programs will be easier to understand and
maintain. Further, if you find a better way to do somethming, you will have to fix it in
only one place.
Everybody knows that increasing buffer size increases I/O speed, but how you do
allocate your buffer space between the InputStream and the
Reader? I discovered by experiment 50:50 is optimal. This means if you are willing to allocate 100K bytes buffer space overall, you should give 50K bytes to the InputStream and
50K bytes / 25K characters to the
Reader. If you want extreme speed, you can read an entire
file at once into RAM (Random Access Memory) with HunkIO.
for the current version of File I/O Amanuensis. Applet to show you how write Java I/O code to read and write files, URLs, HTTP CGI/GET/POST, sockets, StringReaders, resources etc. You select what sort of I/O you need and it generates the Java source code.
zip for File I/O Amanuensis Java source, compiled class files, jar and documentation to run on your own machine either as an application or an Applet.
Runs on any OS that supports Java e.g. W2K XP W2003 Vista W2008 W7-32 W7-64 W8-32 W8-64 W2012 Linux LinuxARM LinuxX86 LinuxX64 Ubuntu Solaris SolarisSPARC SolarisSPARC64 SolarisX86 SolarisX64 OSX.
File I/O Amanuensis is free. Full source included.
You may even include the source code, modified or unmodified
in free/commercial open source/proprietary programs that you write and distribute. Non-military use only.