changeset 5:af8bf4f1e294

changelog
author Hiroki MATSUI <e165718@ie.u-ryukyu.ac.jp>
date Sat, 18 Nov 2017 19:26:13 +0900
parents 0077a3ba5c57
children b68bc2505d46
files src/main/java/jp/ac/uryukyu/ie/e165718/FileWrite.java
diffstat 1 files changed, 83 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/uryukyu/ie/e165718/FileWrite.java	Sat Nov 04 22:04:08 2017 +0900
+++ b/src/main/java/jp/ac/uryukyu/ie/e165718/FileWrite.java	Sat Nov 18 19:26:13 2017 +0900
@@ -1,72 +1,109 @@
 package jp.ac.uryukyu.ie.e165718;
 
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 
 public class FileWrite {
-    private int size;
-    private boolean buffered;
-    private int bufferedSize;
 
-    public static void main(String args[]) throws IOException {
-        System.out.println("Hello World!");
-        FileWrite fw = new FileWrite();
-        fw.getOpts(args);
-        fw.fileWrite();
+    public boolean isbuffering = true;
+    public long filesize = 4096;
+    private String filename = "testData.txt";
+    private int writeData = '@';
+    private int buffer;
+    private long writeSize = 0;
 
+    public boolean isBuffer(){
+        return isbuffering;
+    }
+    public long getFileSize(){
+        return filesize;
     }
 
-    private void fileWrite() throws IOException {
-        OutputStream writer = this.buffered ? new BufferedOutputStream(new FileOutputStream("hoge.txt"), this.bufferedSize) : new FileOutputStream("hoge.txt");
-        for (int i = 0; i < size; i++) {
-            writer.write('a');
+    public static void main(String[] args){
+        FileWrite fw = new FileWrite();
+        fw.getopts(args);
+
+        try {
+            fw.writetest();
+        }catch (IOException e){
+            System.err.println();
         }
-        writer.close();
-    }
-
-    public FileWrite() {
-
     }
 
-    public void getOpts(String args[]) {
-        for (int i = 0; i < args.length; i++) {
-            switch(args[i]) {
+    public void getopts(String[] args){
+        for (int i = 0;i<args.length;i++){
+            switch (args[i]){
                 case "-b":
-                    if (++i >= args.length) {
-                        System.exit(1);
+                    isbuffering = true;break;
+                case "-bs":
+                    isbuffering = true;
+                    if(i+1 <= args.length){
+                        buffer = Integer.parseInt(args[i + 1]);
+                        i++;
                     }
-                    buffered = true;
-                    bufferedSize = Integer.parseInt(args[i]);
                     break;
                 case "-u":
-                    buffered = false;
-                    break;
+                    isbuffering = false;break;
+                case "-s":
                 case "--size":
-                    if (++i >= args.length) {
-                        System.exit(1);
+                    if (i+1 <=args.length){
+                        filesize = Integer.parseInt(args[i + 1]);
+                        i++;
+                    }else{
+                        System.out.println("Usage: [--size][filesize]");
                     }
-                    size = Integer.parseInt(args[i]);
                     break;
-                case "--help":
-                case"-h":
-                    System.out.println("help");
-                    System.exit(0);
+                case "-help":
+                case "-h":
+                    System.out.println("Usage: [-b buffered write] [-u unbuffered write] \n [--size & filesize write filesize] [--help,-h show options]");
             }
         }
     }
 
-    public int getSize() {
-        return size;
+    void writetest() throws IOException {
+        long start = System.currentTimeMillis();
+        long written = 0;
+        int data = writeData;
+        long size = filesize;
+
+        OutputStream os = new FileOutputStream(filename);
+        if (isBuffer()){
+            if(buffer > 0){
+                os = new BufferedOutputStream(os, buffer);
+            }
+            os = new BufferedOutputStream(os);
+        }
+
+        while(written < size){
+            os.write(data);
+            written ++;
+        }
+        os.close();
+
+        long end = System.currentTimeMillis();
+        System.out.println("write "+size+"bytes in "+ (end -start) + " millisec.");
     }
 
-    public boolean isBuffered() {
-        return buffered;
+    private void readTest() throws IOException {
+        writetest();
+        long start = System.currentTimeMillis();
+        long readed = 0;
+        long size = writeSize;
+        InputStream is = new FileInputStream(filename);
+        if(isbuffering) {
+            is = new BufferedInputStream(is);
+        }
+        while (readed < size) {
+            is.read();
+            readed++;
+        }
+        is.close();
+        long end = System.currentTimeMillis();
+        System.out.printf("%d byte read time is %dms\n", writeSize, end - start);
     }
-
-    public int getBufferedSize() {
-        return bufferedSize;
+    boolean getIsBuffering(){
+        return isbuffering;
     }
-}
+    long getWriteSize(){
+        return writeSize;
+    }
+}
\ No newline at end of file