2018년 3월 30일 금요일

[Java] How to run external command ?


1. Run external command with Runtime


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package javautility;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class JavaUtility {

    static void run(String cmd) throws InterruptedException, IOException {
        final Process p = Runtime.getRuntime().exec(cmd);
        new Thread(() -> {
            try {
                BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream(),"euc-kr"));
                String line;
                while ((line = input.readLine()) != null) {
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();  
        p.waitFor();
    }
    
    public static void main(String[] args) throws IOException, InterruptedException {
        run( "find.exe /?");
    }
}


Result:
파일에서 텍스트 문자열을 찾습니다.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "문자열" [[드라이브:][경로]파일이름[ ...]]

  /V        지정한 문자열이 없는 줄을 표시합니다.
  /C        지정한 문자열이 있는 줄 수만을 표시합니다.
  /N        지정한 문자열이 있는 각 줄 앞에 줄 번호를 붙입니다.
  /I        대/소문자를 구별하지 않고 찾습니다.
  /OFF[LINE] 오프라인 속성 세트 파일을 건너뛰지 않습니다.
  "문자열"  찾을 문자열을 지정합니다.
  [드라이브:][경로]파일이름
            찾을 파일의 위치와 이름을 지정합니다.

경로가 지정되지 않으면, FIND는 프롬프트에서 입력되거나 다른 명령에서
파이프(|)된 텍스트에서 찾습니다.





[Java] How to measure execution time ?


1. Measure time with System.nanoTime and System.currentTimeMillis


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package javautility;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class JavaUtility {

    static void testTimeMeasureNano() throws InterruptedException {
        long start = System.nanoTime();
        Thread.sleep(1200);
        long end = System.nanoTime();
        long diff = end - start;
        System.out.println("Elapsed: " + diff + " nsec, " + 
                TimeUnit.NANOSECONDS.toMillis(diff) + " msec" );
    }
    
    static void testTimeMeasureMillis() throws InterruptedException {
        long start = System.currentTimeMillis();
        Thread.sleep(1200);
        long end = System.currentTimeMillis();
        long diff = end - start;
        System.out.println("Elapsed: " + diff + " msec");
    }
    
    public static void main(String[] args) throws IOException, InterruptedException {
        testTimeMeasureNano();
        System.out.println("----------");
        testTimeMeasureMillis();
    }
}



Result:
Elapsed: 1199611928 nsec, 1199 msec
----------
Elapsed: 1201 msec



2. Measure time with LocalTime


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package javautility;

import java.io.IOException;
import java.time.Duration;
import java.time.LocalTime;
import java.util.concurrent.TimeUnit;

public class JavaUtility {

    static void timeMeasureLocalTime() throws InterruptedException {
        LocalTime start = LocalTime.now();
        Thread.sleep(1200);
        LocalTime end = LocalTime.now();
        Duration diff = Duration.between(start,end);
        System.out.println("Elapsed: " + diff.toNanos() + " nsec, " + 
                TimeUnit.NANOSECONDS.toMillis(diff.toNanos()) + " msec" );
    }
    public static void main(String[] args) throws IOException, InterruptedException {
        timeMeasureLocalTime();
    }
}



Result:
Elapsed: 1201000000 nsec, 1201 msec









[Java] CSV Parser and Printer Example


1. CSV Parser and Printer Example

Downlaod: apache commons csv


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package javautility;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.List;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;

public class JavaUtility {

        static String testCsvPrinter() throws IOException {
        Object[] header = { "name", "gender", "age"};        
        StringWriter f = new StringWriter();
        CSVPrinter c = new CSVPrinter(f, CSVFormat.DEFAULT);
        c.printRecord(header);
        c.printRecord(new Object[] { "Alice","female","20" });
        c.printRecord(new Object[] { "Tom","male","23" });
        f.close();
        c.close();
        System.out.println(f.toString());
        return f.toString();
    }
    
    static void testCsvParser(String data) throws IOException {
        CSVParser c = new CSVParser(new StringReader(data), CSVFormat.DEFAULT);
        List<CSVRecord> records = c.getRecords();
        for( CSVRecord r : records ) {
            for( int i=0; i < r.size(); i++ ) {
                System.out.print( r.get(i) + "," );
            }
            System.out.println();
        }
        c.close();
    }
    
    public static void main(String[] args) throws IOException {
        testCsvPrinter();
        System.out.println("----------");
        testCsvParser(testCsvPrinter());
    }
}

Result:
name,gender,age
Alice,female,20
Tom,male,23

----------
name,gender,age
Alice,female,20
Tom,male,23

name,gender,age,
Alice,female,20,
Tom,male,23,





[Java] LRUMap Example


1. LRUMap Example

Download: apache commons collections


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package javautility;

import java.io.IOException;
import java.util.Map;
import org.apache.commons.collections4.map.LRUMap;

public class JavaUtility {

    static void testLRUMapExplicit() {
        Map<String,String> map = new LRUMap(2);   
        map.put("3","C");
        map.put("2","B");
        map.put("1","A");
        for(Map.Entry<String,String> m : map.entrySet() ) { //don't use keySet()
            System.out.println(m.getKey() + "," + m.getValue()); 
        }
    }
    
    static void testLRUMapImplicit() {
        LRUMap map = new LRUMap(2);    
        map.put("3","C");
        map.put("2","B");
        map.put("1","A");
        for( Object m : map.entrySet() ) {
           Map.Entry<String,String> e = (Map.Entry<String,String>)m;
           System.out.println(e.getKey() + "," + e.getValue()); 
        }
    }
    
    public static void main(String[] args) throws IOException {
        testLRUMapExplicit();
        System.out.println("----------");
        testLRUMapImplicit();
    }
}


Result:
2,B
1,A
----------
2,B
1,A



[Java] Multimap Example


1. Multimap Example

Download: guava google core library for Java

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package javautility;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import java.io.IOException;
import java.util.Collection;

public class JavaUtility {

    static void testMultiMap() {
        ListMultimap<String, String> map = ArrayListMultimap.create();
        map.put("1","A");
        map.put("1","a");
        map.put("2","B");
        map.put("3","C");
        Collection<String> list = map.get("1");
        list.forEach(System.out::println);
    }
    
    public static void main(String[] args) throws IOException {
        testMultiMap();
    }
}

Result:
A
a




2018년 3월 26일 월요일

[Java]org.apache.commons.io.FileUtils Examples



Apache Commons FileUtils Examples

Download: commons-io.2.6


1. File Read Examples
2. File Write Examples
3. File and Directory Copy Examples
4. File and Directory Move Examples
5. File and Directory Search Examples
6. File and Directory Delete Examples
7. Make Directory Examples
8. File Check Examples



1. File Read Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package javautility;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
import org.apache.commons.io.FileUtils;

public class FileRead {
    public static String readFileToString(String file, Charset encoding) throws IOException {
        return FileUtils.readFileToString( new File(file), encoding);
    }
    public static String readFileToString(String file, String encoding) throws IOException {
        return FileUtils.readFileToString( new File(file), encoding);
    }
    public static byte[] readFileToByteArray(String file) throws IOException {
        return FileUtils.readFileToByteArray( new File(file));
    }
    public static List<String> readLines(String file, Charset encoding) throws IOException {
         return FileUtils.readLines( new File(file), encoding );
    }
    public static List<String> readLines(String file, String encoding) throws IOException {
        return FileUtils.readLines( new File(file), encoding );
    }
}


2. File Write Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package javautility;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Collection;
import org.apache.commons.io.FileUtils;

public class FileWrite {
    public static void writeStringToFile(String file, String data, Charset encoding) throws IOException {
        FileUtils.writeStringToFile( new File(file), data, encoding);
    }
    public static void writeStringToFile(String file, String data, String encoding) throws IOException {
        FileUtils.writeStringToFile( new File(file), data, encoding);
    }
    public static void writeStringToFile(String file, String data, Charset encoding, boolean append) throws IOException {
        FileUtils.writeStringToFile( new File(file), data, encoding, append);
    }
    public static void writeStringToFile(String file, String data, String encoding, boolean append) throws IOException {
        FileUtils.writeStringToFile( new File(file), data, encoding, append);
    }
    public static void write(String file, CharSequence data, Charset encoding) throws IOException {
        FileUtils.write( new File(file), data, encoding);
    }
    public static void write(String file, CharSequence data, String encoding) throws IOException {
        FileUtils.write( new File(file), data, encoding);
    }
    public static void write(String file, CharSequence data, Charset encoding, boolean append) throws IOException {
        FileUtils.write( new File(file), data, encoding, append);
    }
    public static void write(String file, CharSequence data, String encoding, boolean append) throws IOException {
        FileUtils.write( new File(file), data, encoding, append);
    }
    public static void writeByteArrayToFile(String file, byte[] data) throws IOException {
        FileUtils.writeByteArrayToFile( new File(file), data);
    }
    public static void writeByteArrayToFile(String file, byte[] data, boolean append) throws IOException {
        FileUtils.writeByteArrayToFile( new File(file), data, append);
    }
    public static void writeByteArrayToFile(String file, byte[] data, int off, int len) throws IOException {
        FileUtils.writeByteArrayToFile( new File(file), data, off, len);
    }
    public static void writeByteArrayToFile(String file, byte[] data, int off, int len, boolean append) throws IOException {
        FileUtils.writeByteArrayToFile( new File(file), data, off, len, append);
    }
    public static void writeLines(String file, String encoding, Collection<?> lines) throws IOException {
        FileUtils.writeLines( new File(file), encoding, lines);
    }
    public static void writeLines(String file, String encoding, Collection<?> lines, boolean append) throws IOException {
        FileUtils.writeLines( new File(file), encoding, lines, append);
    }
    public static void writeLines(String file, Collection<?> lines) throws IOException {
        FileUtils.writeLines( new File(file), lines);
    }
    public static void writeLines(String file, Collection<?> lines, boolean append) throws IOException {
        FileUtils.writeLines( new File(file), lines, append);
    }
    public static void writeLines(String file, String encoding, Collection<?> lines, String lineEnding) throws IOException {
        FileUtils.writeLines( new File(file), encoding, lines, lineEnding);
    }
    public static void writeLines(String file, String encoding, Collection<?> lines, String lineEnding, boolean append) throws IOException {
        FileUtils.writeLines( new File(file), encoding, lines, lineEnding, append);
    }
    public static void writeLines(String file, Collection<?> lines, String lineEnding) throws IOException {
        FileUtils.writeLines( new File(file), lines, lineEnding );
    }
    public static void writeLines(String file, Collection<?> lines, String lineEnding, boolean append) throws IOException {
        FileUtils.writeLines( new File(file), lines, lineEnding, append);
    }
}


3. File and Directory Copy Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package javautility;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import org.apache.commons.io.FileUtils;

public class FileCopy {

    public static void copyFileToDirectory(String srcFile, String destDir) throws IOException {
        FileUtils.copyFileToDirectory( new File(srcFile), new File(destDir));
    }
    public static void copyFileToDirectory(String srcFile, String destDir, boolean preserveFileDate) throws IOException {
        FileUtils.copyFileToDirectory( new File(srcFile), new File(destDir), preserveFileDate);
    }
    public static void copyFile(String srcFile, String destFile) throws IOException  {
        FileUtils.copyFile( new File(srcFile), new File(destFile));
    }
    public static void copyFile(String srcFile, String destFile, boolean preserveFileDate) throws IOException {
         FileUtils.copyFile( new File(srcFile), new File(destFile), preserveFileDate);
    }
    public static void copyDirectoryToDirectory(String srcDir, String destDir) throws IOException {
        FileUtils.copyDirectoryToDirectory( new File( srcDir), new File(destDir));
    }
    public static void copyDirectory(String srcDir, String destDir) throws IOException {
        FileUtils.copyDirectory( new File( srcDir), new File(destDir));
    }
    public static void copyDirectory(String srcDir, String destDir, boolean preserveFileDate) throws IOException {
        FileUtils.copyDirectory( new File( srcDir), new File(destDir), preserveFileDate);
    }
    public static void copyDirectory(String srcDir, String destDir, FileFilter filter) throws IOException {
        FileUtils.copyDirectory( new File( srcDir), new File(destDir), filter);
    }
    public static void copyDirectory(String srcDir, String destDir, FileFilter filter, boolean preserveFileDate) throws IOException {
        FileUtils.copyDirectory( new File( srcDir), new File(destDir), filter, preserveFileDate);
    }

    public static long copyFileToOutputStream(String srcFile, OutputStream output) throws IOException {
        return FileUtils.copyFile( new File(srcFile), output);
    }
    public static void copyInputStreamToFile(InputStream source, String destination) throws IOException {
        FileUtils.copyInputStreamToFile( source, new File(destination));
    }
    public static void copyToFile(InputStream source, String destination) throws IOException {
        FileUtils.copyInputStreamToFile( source, new File(destination));
    }
    
    
    public static void copyURLToFile(URL source, String destination) throws IOException {
        FileUtils.copyURLToFile( source, new File(destination));
    }
    public static void copyURLToFile(URL source, String destination, int connectionTimeout, int readTimeout) throws IOException {
        FileUtils.copyURLToFile( source, new File(destination), connectionTimeout, readTimeout);
    }
}



4. File and Directory Move Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package javautility;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class FileMove {

    public static void moveDirectory(String srcDir, String destDir) throws IOException {
        FileUtils.moveDirectory( new File(srcDir), new File(destDir));
    }

    public static void moveDirectoryToDirectory(String src, String destDir, boolean createDestDir) throws IOException {
        FileUtils.moveDirectoryToDirectory( new File(src), new File(destDir), createDestDir);
    }

    public static void moveFile(String srcFile, String destFile) throws IOException {
        FileUtils.moveFile( new File(srcFile), new File(destFile));
    }

    public static void moveFileToDirectory(String srcFile, String destDir, boolean createDestDir) throws IOException {
        FileUtils.moveFileToDirectory( new File(srcFile), new File(destDir), createDestDir );
    }

    public static void moveToDirectory(String src, String destDir, boolean createDestDir) throws IOException {
        FileUtils.moveToDirectory( new File(src), new File(destDir), createDestDir );    
    }
}



5. File and Directory Search Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package javautility;

import java.io.File;
import java.io.FileFilter;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;

public class FileList {

    public static Collection<File> getFiles(String directory, IOFileFilter fileFilter, IOFileFilter dirFilter) {
        return FileUtils.listFiles( new File(directory), fileFilter, dirFilter);
    }
    public static Collection<File> getFilesAndDirs(String directory, IOFileFilter fileFilter, IOFileFilter dirFilter) {
        return FileUtils.listFilesAndDirs( new File(directory), fileFilter, dirFilter);
    }
    public static Collection<File> getFiles(String directory, String[] extensions, boolean recursive) {
        return FileUtils.listFiles( new File(directory), extensions, recursive);
    }
        
    public static File[] getFilesArray(String directory, IOFileFilter fileFilter, IOFileFilter dirFilter) {
        return FileUtils.convertFileCollectionToFileArray(FileUtils.listFiles( new File(directory), fileFilter, dirFilter));
    }
    public static File[] getFilesAndDirsArray(String directory, IOFileFilter fileFilter, IOFileFilter dirFilter) {
        return FileUtils.convertFileCollectionToFileArray(FileUtils.listFilesAndDirs( new File(directory), fileFilter, dirFilter));
    }
    public static File[] getFilesArray(String directory, String[] extensions, boolean recursive) {
        return FileUtils.convertFileCollectionToFileArray(FileUtils.listFiles( new File(directory), extensions, recursive));
    }
}



6. File and Directory Delete Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package javautility;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class FileDelete {
    public static void deleteDirectory(String directory) throws IOException {
        FileUtils.deleteDirectory( new File(directory) );
    }
    public static boolean deleteQuietly(String file) {
        return FileUtils.deleteQuietly( new File(file));
    }
    public static void forceDelete(String file) throws IOException {
        FileUtils.forceDelete( new File(file));
    }
    public static void forceDeleteOnExit(String file) throws IOException {
        FileUtils.forceDeleteOnExit( new File(file));
    }
    public static void cleanDirectory(String directory) throws IOException {
        FileUtils.cleanDirectory( new File(directory));
    }  
}



7. Make Directory Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package javautility;

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class FileMkdir {
    public static void forceMkdir(String directory) throws IOException {
        FileUtils.forceMkdir( new File(directory));
    }
    public static void forceMkdirParent(String file) throws IOException {
        FileUtils.forceMkdirParent( new File(file));
    }
}




8. File Check Examples

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package javautility;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.zip.Checksum;
import org.apache.commons.io.FileUtils;

public class FileCheck {
    public static boolean isFileNewer(String file, String reference) {
        return FileUtils.isFileNewer( new File(file), new File(reference));
    }
    public static boolean isFileNewer(String file, Date date) {
        return FileUtils.isFileNewer( new File(file), date);
    }
    public static boolean isFileNewer(String file, long timeMillis) {
        return FileUtils.isFileNewer( new File(file), timeMillis);
    }
    public static boolean isFileOlder(String file, String reference) {
        return FileUtils.isFileOlder( new File(file), new File(reference));
    }
    public static boolean isFileOlder(String file, Date date) {
        return FileUtils.isFileOlder( new File(file), date);
    }
    public static boolean isFileOlder(String file, long timeMillis) {
        return FileUtils.isFileOlder( new File(file), timeMillis);
    }
    public static boolean isSymlink(String file) throws IOException {
        return FileUtils.isSymlink(new File(file));
    }

    public static long checksumCRC32(String file) throws IOException {
        return FileUtils.checksumCRC32( new File(file));
    }
    public static Checksum checksum(String file, Checksum checksum) throws IOException {
        return FileUtils.checksum( new File(file), checksum );
    }
}