2007年09月27日

続・ファイル名の長さ

 今日はまず昨日の続きで、ファイル名の長さについて書きます。

 今日少し調べてみたところ、Windows 98/me ではファイル名の長さは255バイトまででしたが、2000/XPではバイト数ではなく文字数で260文字まででした。
 ここで、正確には終端の\0があるので、どちらも-1になります。
 さらに、XPでファイルシステムによって違うのかとも思い、FAT32,NTFSでも調べてみましたが、どちらも同じ文字数でした。

 ここで一応バイト数と文字数の違いについて書いておくと、バイト数は半角文字(英数字など)が1バイトで全角文字(仮名・漢字など)が2バイトになるので、全角文字を使うと少ない文字数で規定のバイト数に達します。
 一方文字数だと、どの文字を使っても規定の文字数まで使えるので、全角文字を使えばバイト数は多くなります。
 98/me 系と 2000/XP 系で違うのは、恐らくファイル名を扱うのがUnicodeだからだと思います。
 Unicodeでは、どんな文字でも2バイトを使って表すので、どんな文字を使っても文字数が同じならバイト数も同じになります。

 次に、長いファイル名が出来てしまったときの対処法ですが、実際にそういう状況を作ろうとしたのですが出来ませんでした。
 深い階層で解凍しようとするとエラーになり解凍出来ないし、移動やコピーも出来ません。
 プログラムから作ろうとしても、API自体が対応していないので、やはりエラーになります。
 一体みんなはどんな方法で長いファイル名になるんでしょうねぇhatena01.gif
 とりあえず言えることは、専用のソフトがあるみたいなので、それを使って下さいとしか書けないです。gomen01.gif

 次に、今日PCを使おうと思ったらマウスの電源が入らなくなりました。もうやだ〜(悲しい顔)
 電池が無くなったのかと思い、新品の電池を入れてみましたが電源は入りませんでした。
 ついに壊れたのかと思い、仕方なく違うマウスを使っていたのですが、バラしてもまったく解らないのに「どうせダメならバラしてみるか!」という安易な気持ちで実行に移してしまいました。

 バラしてみても何の知識もないので当然解る訳もなく、あきらめかけたとき、電池の接触部分を見てみると、なんとそこから基盤につながっている線が断線していました。がく〜(落胆した顔)
 そこで、その部分をハンダ付けしてみたところ見事に直りました。ぴかぴか(新しい)
 心なしか今までより調子がよくなったような気さえします。
 またマウス探しをしなければならないのかと思っていたので、余計にうれしかったです。w01.gif

 次に、今日の検索フレーズですが、今日は特に気になったものがなかったので無しです。gomen01.gif

続きを読む?
ランキングへ  posted by 遠雷 at 00:29 | コメント(0) | パソコン・インターネット

2007年09月26日

アニメーションGIF2

 今日も昨日に続き「アニメーションGIF」についてやりました。

 昨日は「ファイル名変更君」の「ファイル情報ダイアログ」のピクチャーボックス部分に描画していたのですが、今日は「見比べ君2」で実験してみました。
 ここで、ただ単に描画するだけなら問題ないのですが、このソフトはその後色々な処理があるので、そこまでやろうとするとかなり大変だということが解りました。
 例えば、合成したり、色を変更したり、ファイル情報を表示したり、といったことが、今のやり方ではうまくできず、ここの部分はまた別の処理を追加なり改良なりしていかないとダメみたいです。
 なので、アニメーションさせるのは「どこか一カ所だけにしようかな」と思っていたりします。
 今の候補は、メインウインドウのイメージビューをクリックして表示される、プレビューウインドウでだけアニメーションさせようかなと思っています。

 次に今日の検索フレーズですが、「ファイル名 長い 変更」などの「ファイル名が長すぎる」という症状の対処方法を探していると思われるフレーズです。
 これは、ISOやWindowsなどで設定されているファイル名の長さを超えてしまって、ファイルをコピーや移動、リネーム、削除などの操作が出来なくなった人が、リネームして何とかしようとしているものだと思います。
 では何故こんな状況になったかというと、本来は決められたファイル名の長さを超えてリネーム出来ないのですが、色々な操作で、深い階層の場所にファイルを作ってしまったときに陥る状況で、元々ギリギリだったファイル名の長さなのに深い階層だとその分ファイル名の長さが追加されてしまうからです。

 何か解りにくいですが、例を挙げると、Windowsでは255バイトの文字長しか扱えないことになっています。(プログラム上では260バイトですが)
 ここで、ファイル名の長さが200バイトのファイルがあり、このファイルは圧縮されていてZipファイルの中にあるとします。
 これを、階層の位置が55バイト以上の位置に解凍してしまうと、ファイル名の長さが255バイトを超えてしまうことになります。

 こうして255バイト以上のファイルが完成するという訳です。
 この他にどこかからダウンロードしたり、何かのソフトによって作られたりした場合でも同じようになります。

 では肝心の回避方法ですが、一番簡単なのは「深い階層にファイルを作らない。」です。
 要するに、ドライブの直下にファイルをつくれば追加されるのは「C:\」だけなので、通常では規定値より長くなることはありません。

 ここで今これを書きながら長いファイル名を作ってみようと思い、作ってみたら簡単に260バイト以上のファイル名を付けることが出来ました。hatena01.gif
 そこでどこまで長くできるかやってみたところ、259文字(479バイト)まで出来ました。
 これはWindows XPでやったのですが、恐らくUnicode扱いの260文字(終端の\0含む)まで可能のようです。

 何かよく解らなくなってきたので、もう一度調べ直して報告したいと思います。gomen01.gif
ランキングへ  posted by 遠雷 at 01:39 | コメント(0) | パソコン・インターネット