スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

ファイルパスの最大長はシステム固定。ではファイル名は ?

今回はコンピューター関連のクイズにしてみたいと思います。
ファイルパスの最大長はシステムで固有の制限値があります。
では、 フォルダー(ディレクトリー)のパス部分を除いたファイル名の最大長にはどのような制限があるでしょうか ?

これを C, C++ プログラマー向けにすると次のような問題です。
ファイルパスの最大長は MAX_PATH(PATH_MAX) の定義から取得できます。
では、 フォルダー(ディレクトリー)のパス部分を除いたファイル名の最大長を取得するにはどうしたらいいでしょうか ?


答え

フォルダーのパスを除いたファイル名自体には制限がありません。 ただし、ファイルのフルパスの最大長には制限があるため、 ファイル名の最大長は次のようになります。
(ファイルパスの最大長) - (ファイルを置くフォルダーパスの文字列長)


どうしてこのファイル名の制限がないのかというと OS からみたファイル名はフルパスのみ だからです。
OS はフルパスのファイル名を擬似的に階層構造として扱います。
C: /foo/taco.txt
   /foo/ika.exe
   /foo/bar/kurage.png
   /foo/bar/hitode.jpg
上記のようなファイルがあったとして、 C:/foo/bar のフォルダーを開くということは、 C:/foo/bar で始まるファイル(kurage.png, hitode.jpg) を表示するということになります。

これは Windows や Unix などたいていの OS で同じようになっています。

ファイルの移動

ファイルを移動する場合、同じドライブ(パーティション)内での移動はすぐに終わりますが、 ドライブをまたいだ移動の場合は、時間がかかります。

これはファイルの移動処理は同じドライブ内ではリネーム(名前の変更)と同じ処理だからです。
ドライブをまたぐ場合は別の領域への移動となるため、 コピーして、元のファイルを削除といった処理が必要となります。

空フォルダー

擬似的な階層構造では空のフォルダーを持つことができないのではないか と思う人もいるかもしれません。
しかし、 OS のファイルシステムの場合 C:/foo/bar/. といったフォルダーを表すファイルを使って、 空のフォルダーを扱えるようにしています。

圧縮ファイルやバージョン管理システムも同じような擬似的な階層構造を使います。 これらの中にはたまに空のフォルダーを作れないものがあります。
これはフォルダーを表すファイルというものが用意されていないためです。
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
9位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
3位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

09月 | 2017年10月 | 11月
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 - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。