うみわたりんりんりん

海を渡り、空を飛び、徒より陸を征く高専生。

進数表現でuniqueなファイル名を設定したい.java

まだ自分でもよくわかってない

 

実行中に生成したファイルに名前を付けたいというとき、

 

例えば

 

 aaa.write(sometype, new java.io.File("filename"));

 

とかやる。

 

で。

 

一度にたくさんファイルを作ったり、

一度にいくつファイルを作るかわからないとき、

 

例えば、10個はファイルを作りたいとき、

 

for(int i=0; i<10; i++){

   aaa.write(some..., new java.io.File(i + "filename"));

}

 

 

とかやる。

 

で。

 

やりたかったのは、

「ファイルの内容が一意にとれる名前を付けたい」ということ。

 

具体的には、

「いくつかの数字の並びを一つにまとめたファイル名で生成したい」

 

で。

 

今回は、いくつかの数字が0~300あたりの値なので、桁数がばらつく。

 

やりたいことは、

  • 桁がない部分には0を入れる
  • 3桁の数字がたくさん並んで一つにつなげると長いので短くする

 

例えば、

 

1, 50, 66, 121, 4, 55, 24, ...  ←こんな ArrayList<Integer> bbb を使うとして

 

これを一つにまとめると

 

1506612145524...

 

これでは区切りが分からないので

 

001050066121004055024...

 

これだとファイル名として長すぎるので

 

01324279043718...

 

みたいにしたい。

 

で、

 

Integer hex;

for(Integer i = 0; bbb.get(i) != null; i++){

   hex += String.format("%02x", Integer.toHexString(bbb.get(i));

}

aaa.write(some..., new java.io.File(hex + "filename")); 

 

とかやるとダメだった。

 

String.format() がうまいこといかないのと、

ArrayListの中身を一度別の変数に持たせないと具合が悪いそうで。

 

 

どうにかなったら続きを書きます。

今日はそろそろ帰る。

2017-06-15-19-33

 

以下、参考にしました。

d.hatena.ne.jp

www.techscore.com

qiita.com

 

 

---

 

 

加筆@2017/06/16

 

ArrayList の中身を一度受ける部分はどうにかなった。

 

でも、String.format() がうまいこといかない。

 

で、

 

これが String.format() の問題だけじゃないっぽいことは分かった。

 

hex += String.format("%02x", Integer.toHexString(bbb.get(i));

 

を、forループしないで

{

   Integer sss = bbb.get(n);

   String hex = toHex(sss);

}

~~~ 

private static String ToHex(Integer a) { // Integerを16進数2桁にして返す
   String s = Integer.toHexString(a);
   if(s.length() == 1) s = "0" + s;
   return s;
}

 

 

とかやったらうまいこといった。

 

でも、これをforループ内でやろうとするとダメだった。

 

ここで、もしや条件式が悪いのではと思い立つ。

 

で、

 

Integer sss;

String hex;

 

for(Integer i = 0; bbb.get(i) != null; i++){

for(int i = 0; i < bbb.size(); i++){

   sss = bbb.get(n);

   hex += ToHex(sss);

}

aaa.write(some..., new java.io.File(hex + "filename")); 

 

 

ってやったらうまいこといった。

 

なんでうまいこといったのかはおいおい考える。

 

 

以下参考にしました。

d-kami.hatenablog.com

www.javadrive.jp