![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
No.3ベストアンサー
- 回答日時:
昔のファイルシステム(FAT)ではパス名の最長が255文字に制限されていました。
それに、ドライブレター等(C:¥)3文字とファイル名(8+3)の間のピリオド1文字で
255+3+1=259文字が最長パスです。
さらに、C言語で作成されたライブラリでは、
文字列の末尾にはNull文字(0x00)を付ける約束になっています。
それを含めて、MAX_PATH=260 となっています。
今どきのファイルシステム(NTFS)とはかなり違いますよね。
そんな訳で、時代とともに移り変わるシステムの中身が、
統一が取れているはずと思う方がおかしい。
回答ありがとうございます。
MAX_PATHを使うシュツエーションが違っていると言うことでしょうか?
ファイルシステムの時代の変化があっても、ファイル作成時には現在も260文字まで使えるようです。
なのに何故、MakeSureDirectoryPathExistsやrenameの時のファイルパスの文字数が260字まで使えないのでしょうか?
よろしくお願いします。
No.5
- 回答日時:
>関数によって異なる理由
システムは日々進化しているのに、
個々の関数はそれが作られた当時の仕様のままだから。
関数自体の仕様を変更すると、
その影響による不具合がどこで出るか判らないので、
新しい関数を作ってしまう。
で、古い関数の仕様は置き去りにされる。
回答ありがとうございます。
今や260文字は意味を持たない定数となったのですね。
できれば、ファイル名を含まないパス名の許容文字数を教えてください。
でも今それが解っても、将来変更の可能性もありうることだと思います。
解決策としては、実際に多重のフォルダーを作ってみてエラーがでた時解決する以外に完全な解決方法はないように思います。
ありがとうございました。
No.4
- 回答日時:
本当はこんなところで聞く話じゃないと思うけどなぁ....
さておき, 具体例はありますか?
毎度お世話になります。
具体例はかなりの行数になりますから、イメージでお願いします。
CreateFile(フルパス+名前(259字までOK)・・・)
MakeSureDirectoryPathExists(C:\試験\TEST\test.txt(248字までOK))
rename(C:\試験\TEST\test.txt, D:\試験\TEST\test.txt(220までOK))
実際のソースでもこれと同等だとお考えください。
No.2
- 回答日時:
MAX_PATHの値は、少なくとも140以上にしなければならないとか...
ってことは、固定じゃない。
回答ありがとうございます。
主旨はMAX_PATHはファイル名を含めたパス文字数が260字までは許可さてれいるのですが、
ファイル作成時は259文字まででそれ以上はファイル作成が失敗します。
多重構造のフォルダー作成時は248文字までそれ以上はフォルダーが出来ません。
リネームは220文字までそれ以上のパス文字ではリネームが失敗します。
MAX_PATHの定義はファイル作成のトータルの文字数が260となっているにも関わらず
ファイル作成時、フォルダー作成時、リネームではどうして260文字使えないのかの質問です。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- Excel(エクセル) エクセル文字列の日付を日付けに変える 2 2023/05/13 11:08
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) Excelの入力規則にいれる関数について 7 2022/12/22 10:19
- 数学 aを実数の定数とする。xの方程式 (x²+2x)²ーa(x²+2x)ー6=0 の異なる実数解の個数を 4 2023/02/13 23:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
ダブルクォーテーションを文字...
-
文字列の後ろから必要分だけ削...
-
「XML」の読み方
-
strcmp( )関数について教えて...
-
awk で右端の文字を1文字削除...
-
文字列にアルファベットが何文...
-
vb.net IVSの漢字を1文字切り...
-
エクセル関数で記号から記号の...
-
CSVの禁則文字
-
ExcelVBAを使って、値...
-
count(*)で取得した値をJAVAの...
-
【Excel】指定したセルの名前で...
-
i=cells(Rows.Count, 1)とi=cel...
-
データ数をカウントしたいのですが
-
ListView 項目の選択/選択解除...
-
VB.NETで DataRow()を利用して...
-
表にフィルターをかけ、絞った...
-
JSP+Servletでのページングの常識
-
VBA初心者です。結合セルを保持...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
UNICODE文字が含まれているかの...
-
ダブルクォーテーションを文字...
-
エクセル関数で記号から記号の...
-
文字列にアルファベットが何文...
-
C言語でギリシャ文字は使えます...
-
GetDlgItemTextについて
-
strcmp( )関数について教えて...
-
VS C++6.0のCString にて先頭1...
-
お願いです!!
-
URLで使える文字・使えない...
-
文字数と単語数を数えるプログラム
-
awk で右端の文字を1文字削除...
-
右から何文字目にあるか文字位...
-
CSVの禁則文字
-
VBScriptでXcopyしたいのですが
-
64進数
-
環境依存文字?をEnumで定義したい
-
VB2008 文字列に等間隔にスペ...
おすすめ情報