ラベル JAVA の投稿を表示しています。 すべての投稿を表示
ラベル JAVA の投稿を表示しています。 すべての投稿を表示

2013年11月5日火曜日

Fileオブジェクト(getName(), getParent())

ファイルを扱う場合によく使うオブジェクトです。
フォルダを作ったり、存在しているかの確認等してくれます。

Fileオブジェクトの生成  ファイルのパズを指定
File fFile = new File( "C:\\test\\test.txt");

ファイルのパスはurlでも、ローカルでもどちらでも大丈夫です。

簡単なFileオブジェクトの使い方

■ファイル名の取得
fFile.getName()
→test.txt

■親ディレクトリの取得
fFile.getParent()
→C:\test

■ファイルかの判定
fFile.isFile()
→true or false

仮にFileオブジェクトで指定したファイルの場合には、
ファイルが実在しないと、trueになりません。

■ファイルが存在するのかの判定
fFile.exists();


基本的なところはこんな感じです。

Fileオブジェクト生成時に指定するパスをディレクトリーにした場合
のサンプルです。

■生成
File fParent = new File( fFile.getParent() );

■ディレクトリを作成する
fParent.mkdir()
→true or false
1つ上の階層のディレクトリが作成されていないとfalseになります。

■ディレクトリを作成する
fParent.mkdirs()
→true or false
マジ神レベル!!
上の階層がなくても作ってくれます。
また、Fileオブジェクト作成時にファイルを指定すると、その名前の
ディレクトリが作成されます。


Fileオブジェクトは上の方で書いたようにサーバー上のファイルも使えるので、
サーバー上のファイルをローカルに保存する際に、
ファイルがあるか?ディレクトリがあるか?の判定で便利です。

■ディレクトリ内のファイルを取得
fParent.listFiles()
→File配列

ディレクトリ内のファイルが配列になって、返ってきます。

■ファイル名の変更
fParent.renameTo(new File ( 変更先のファイル名 ) )
→true or false

ファイル名の変更します。
コピーではないので、元ファイルは消えます。
Linuxで言うmvみたいなものです。move。
なので、ファイルを移動させるメソッドとして利用できます。

また、指定するファイルはフルパスで。。。


本日のまとめ
■サンプルソース
import java.io.File;


public class main{

    public static void main(String [] args) {
        //対象のファイル
        String sPath = "C:\\test\\test.txt";

        //ファイルシステムの作成
        File fFile = new File( sPath );

        //ファイル名の取得
        System.out.println( fFile.getName() );

        //親ディレクトリの取得
        System.out.println( fFile.getParent() );

        //ファイルかディレクトリかの判定
        System.out.println( fFile.isFile() );

        //親ディレクトリのファイルシステム作成
        File fParent = new File( fFile.getParent() );

        //親ディレクトリが存在していなかったら作成
        if ( !fParent.exists() )System.out.println( fParent.mkdirs() );
    }
}

2013年11月3日日曜日

Java目録


2013年8月22日木曜日

?でsplit Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0 ?

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?

"?" (はてな、クエッション)
でsplitをしようとしたら、このようなエラーがでました。

"http://XXXXXX.com/AAAAAAA/CCCCC/?page=2&mode=max&rtn_urk=http://XX&version=1.0"

こんなURLのパラメータだけを取得しようとして、失敗!!

とりあえず、splitから方向転換して、

String sUrl   = "http://XXXXXX.com/AAAAAAA/CCCCC/?page=2&mode=max&rtn_urk=http://XX&version=1.0";
String sParam = sUrl.substring( sUrl.indexOf("?") + 1);
System.out.println("パラメーター:" + sParam);
こんな感じにすると成功!!

出力結果
パラメーター:page=2&mode=max&rtn_urk=http://XX&version=1.0

splitはだめでしたが、indexOfは?を認識したようです。
なぜ??

このままでもいいんですが、何となくsplitできる方法をさがしたところ。。。


String[] sList = sUrl.split("\\?");

このようにエスケープ文字を2つ入れるとOKでした。

?がエスケープ文字とは知らなかったです。。。

2013年8月20日火曜日

文字列(String型)

AndroidというよりJAVAよりな事ですが、
文字列を扱う各関数について、よく使うのを
紹介します。

■生成
String str = "Hello, World";

new はなくても生成できます

■文字長さ取得
int型 str.length();
かっこの中に何を入れるかはわかりませんが、
こんな使い方。
注意点は全角でも1文字と判定されることです。

■文字列が同じかの判定
boolean型  str.equals("判定文字");

=とか==とか===では同じ文字列かの判定はできません

ex)
if ( !str.eqquals("ok") ){
}
//文字列がokではないことを判定しています。


■指定した文字列から始まっているかの判定
boolean型 str.startsWith("判定文字列")


■指定した文字列の現れる位置を取得
int型 str.indexOf("判定文字列");

存在しない場合には,-1を返します。。


■型を変更させる
●文字列型から、数値型
Integer.valueOf("1245");

●数値型から、文字列型
String.valueOf(123556);