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));
                    	}
                    }