Home > Tags > java

java

ディスク領域取得 - Java

Java SE 6ではディスク領域(パーティションのサイズ)を取得できます。

import java.io.File;
・・・
for(File root : File.listRoots()){
 System.out.println("[" + root.getPath() + "]");
 System.out.println("Total space: " + root.getTotalSpace() + " bytes");
 System.out.println("Free space: " + root.getFreeSpace() + " bytes");
 System.out.println("Usable space: " + root.getUsableSpace() + " bytes");
 System.out.println();
}

/*----- 出力 -----*/
[A:\]
Total space: 0 bytes
Free space: 0 bytes
Usable space: 0 bytes

[C:\]
Total space: 267640631296 bytes
Free space: 178308878336 bytes
Usable space: 178308878336 bytes

[D:\]
Total space: 41943035904 bytes
Free space: 35732340736 bytes
Usable space: 35732340736 bytes

取得に多少時間がかかるみたいです。

NavigableSet - Java

java.util.NavigableSet。
なにこれと思ったらJava SE 6で追加されたものでした。

要素を取得するメソッド (Eは型)

* E higher(E e)
 - 要素の中から e より大きい最小の値を返します。存在しない場合は null
* E ceiling(E e)
 - 要素の中から e 以上の最小の値を返します。存在しない場合は null
* E floor(E e)
 - 要素の中から e 以下の最大の値を返します。存在しない場合は null
* E lower(E e)
 - 要素の中から e 未満の最大の値を返します。存在しない場合は null
* E pollFirst()
 - 最小値を持つ要素を返すと同時に NavigableSet から削除します。NavigableSet が空の場合は null を返します
* E pollLast()
 - 最大値を持つ要素を返すと同時に NavigableSet から削除します。NavigableSet が空の場合は null を返します

NavigableSet から新しい NavigableSet を作成するメソッド

* NavigableSet descendingSet()
 - 順序付けが反対で同じ要素を持つ NavigableSet を返します
* NavigableSet headSet(E toElement, boolean inclusive)
 - toElement 以下(inclusive が true の場合)または toElement 未満(inclusive が false の場合)の値を含む NavigableSet を返します
* NavigableSet tailSet(E fromElement, boolean inclusive)
 - fromElement 以上(inclusive が true の場合)または fromElement 超過(inclusive が false の場合)の値を含む NavigableSet を返します
* NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
 - fromElement 以上(fromInclusive が true)または fromElement 超過(fromInclusive が false)、なおかつ toElement 以下(toInclusive が true)または toElement 未満(toInclusive が false)の値を含む NavigableSet を返します

NavigableSet<Integer> navigableSet = new TreeSet<Integer>();

for(int i=0; i<10; i++){
 navigableSet.add(i);
}

System.out.print("elements of NavigableSet: ");
System.out.println(navigableSet);

// 5 超過/以上/以下/未満の要素を取得.
System.out.println("higher(5) : " + navigableSet.higher(5));
System.out.println("ceiling(5) : " + navigableSet.ceiling(5));
System.out.println("floor(5) : " + navigableSet.floor(5));
System.out.println("lower(5) : " + navigableSet.lower(5));
// 最大・最小値の要素を取得後,削除
System.out.println("pollFirst() : " + navigableSet.pollFirst());
System.out.println("pollLast() : " + navigableSet.pollLast());

System.out.print("elements of NavigableSet: ");
System.out.println(navigableSet);

NavigableSet<Integer> descendingSet = navigableSet.descendingSet();
System.out.println(descendingSet);

NavigableSet<Integer> headSet = navigableSet.headSet(3, true);
System.out.println(headSet);

NavigableSet<Integer> tailSet = navigableSet.tailSet(3, false);
System.out.println(tailSet);

NavigableSet<Integer> subSet = navigableSet.subSet(3, true, 7, false);
System.out.println(subSet);

/*----- 出力 -----*/
elements of NavigableSet: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
higher(5) : 6
ceiling(5) : 5
floor(5) : 5
lower(5) : 4
pollFirst() : 0
pollLast() : 9
elements of NavigableSet: [1, 2, 3, 4, 5, 6, 7, 8]
[8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3]
[4, 5, 6, 7, 8]
[3, 4, 5, 6]

目的の要素を探索するときに便利ですね。

FindBugs - Java

NetBeansを使い始めて間もないですが、少しずつ慣れてきました。
プラグインもぼちぼち選んでいこうかなと思ってまずはCheckstyleとFindBugsを。
SQE(Software Quality Environment )でFindBugs、Checkstyle等をまとめてインストールできます。
使うには、ツールバーのQuality → CodeDefects → Check Qualityから起動するか、追加されたCheck Qualityアイコンをクリックするだけです。

なんかちょっと日本語が変ですが普通に使う分には問題ないようです。

スクリプティング - Java

最近はスクリプト(主にActionScriptとPHP)ばかり触っていましたが、
Javaでもスクリプトが使えると聞いたことがあったのでさっそく調べてみました。
どうやらJava SE6からスクリプティング機能が付いたらしいです。

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class HelloScripting {
    public static void main(String[] arguments) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("javascript");

        try {
            String script = "print('Hello Scripting')";
            engine.eval(script);
        } catch(ScriptException exception) {
            exception.printStackTrace();
        }
    }
}

ScriptEngineManager:スクリプティング機能の開始点を提供するクラス。
ScriptEngine:スクリプトの実行エンジンを表すインタフェース。
ScriptException:スクリプティング機能によるエラーを表す例外クラス。

最初にjavax.script.ScriptEngineManagerクラスをインスタンス化して、ScriptEngineManagerクラスの getEngineByNameメソッドでJavaScriptの実行エンジンを取得しています。
それからevalメソッドでスクリプトを評価しています。このevalメソッドはFileReaderも引数に取れるので、外部においたjsファイルの内容も評価できます。
他にも、スクリプトからJavaのオブジェクトにアクセスしたり、逆にJavaからスクリプトのオブジェクトにアクセスすることもできるみたいです。

最近のJavaは周りからいろいろ取り込んでどんどん巨大になっていってますね。
使う側としては覚えることが増えて大変です;

参考:
Java SE6 じゃじゃ馬ならし 言語の中の言語 - Scripting

続き StAX - Java SE 6

引き続きStAX。
次はCursor APIでXMLの書き出しをしてみます。

Continue reading

Home > Tags > java

Meta

Return to page top