package hdf5;
                      
                      
                      import java.io.PrintStream;
                      import java.util.Arrays;
                      import java.util.Random;
                      
                      
                      import ch.systemsx.cisd.hdf5.HDF5Factory;
                      import
                        ch.systemsx.cisd.hdf5.IHDF5SimpleReader;
                      import
                        ch.systemsx.cisd.hdf5.IHDF5SimpleWriter;
                      
                      
                      public class Hdf5Test {
                      	static
                        final String hdf5FileName = "myfile.h5";
                      	static
                        final String tag = "mydata";
                      
                      
                      	public
                        static void main(final String[] args) {
                      
                      
                      		//
                        write thread
                      		new
                        Thread(new Runnable() {
                      			@Override
                      			public
                        void run() {
                      				final
                        IHDF5SimpleWriter writer =
                        HDF5Factory.open(hdf5FileName);
                      				final
                        Random r = new Random();
                      				for
                        (int i = 0; i < 10; i++) {
                      					pause(500);
                      					final
                        float[] data = "" float[1000];
                      					for
                        (int n = 0; n < data.length; n++) {
                      						data[n]
                        = r.nextFloat() * 10000f;
                      					}
                      					writer.writeFloatArray(tag
                        + i, data);
                      					printData(data,
                        5, System.out);
                      				}
                      				writer.close();
                      			}
                      		}).start();
                      
                      
                      		pause(1000);
                      		//
                        read thread
                      		new
                        Thread(new Runnable() {
                      			@Override
                      			public
                        void run() {
                      				final
                        IHDF5SimpleReader reader =
                        HDF5Factory.open(hdf5FileName);
                      				for
                        (int i = 0; i < 10; i++) {
                      					pause(600);
                      					float[]
                        mydata = new float[1000];
                      					mydata
                        = reader.readFloatArray(tag + i);
                      					printData(mydata,
                        5, System.err);
                      				}
                      				reader.close();
                      			}
                      		}).start();
                      
                      
                      	}
                      
                      
                      	private
                        static void pause(final int millisecond) {
                      		try
                        {
                      			Thread.sleep(millisecond);
                      		}
                        catch (final InterruptedException e) {
                      			e.printStackTrace();
                      		}
                      	}
                      
                      
                      	private
                        static void printData(final float[] data, final
                        int size, final PrintStream out) {
                      		if
                        ((data == null) || (data.length < size)) {
                      			return;
                      		}
                      		final
                        float[] temp = new float[size];
                      		System.arraycopy(data,
                        0, temp, 0, size);
                      		out.println(Arrays.toString(temp));
                      	}
                      }