No.2
- 回答日時:
MAX_PATHの値は、少なくとも140以上にしなければならないとか...
ってことは、固定じゃない。
回答ありがとうございます。
主旨はMAX_PATHはファイル名を含めたパス文字数が260字までは許可さてれいるのですが、
ファイル作成時は259文字まででそれ以上はファイル作成が失敗します。
多重構造のフォルダー作成時は248文字までそれ以上はフォルダーが出来ません。
リネームは220文字までそれ以上のパス文字ではリネームが失敗します。
MAX_PATHの定義はファイル作成のトータルの文字数が260となっているにも関わらず
ファイル作成時、フォルダー作成時、リネームではどうして260文字使えないのかの質問です。
よろしくお願いします。
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.4
- 回答日時:
本当はこんなところで聞く話じゃないと思うけどなぁ....
さておき, 具体例はありますか?
毎度お世話になります。
具体例はかなりの行数になりますから、イメージでお願いします。
CreateFile(フルパス+名前(259字までOK)・・・)
MakeSureDirectoryPathExists(C:\試験\TEST\test.txt(248字までOK))
rename(C:\試験\TEST\test.txt, D:\試験\TEST\test.txt(220までOK))
実際のソースでもこれと同等だとお考えください。
No.5
- 回答日時:
>関数によって異なる理由
システムは日々進化しているのに、
個々の関数はそれが作られた当時の仕様のままだから。
関数自体の仕様を変更すると、
その影響による不具合がどこで出るか判らないので、
新しい関数を作ってしまう。
で、古い関数の仕様は置き去りにされる。
回答ありがとうございます。
今や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関数...
-
GetDlgItemTextについて
-
文字列の後ろから必要分だけ削...
-
VS C++6.0のCString にて先頭1...
-
文字数と単語数を数えるプログラム
-
Windows formアプリで データグ...
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
VBAでセルをクリックする回...
-
ハッシュテーブル(連想配列)が...
-
Excelのセルの色指定をVBAから...
-
VBからEXCELのセルの値を取得す...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
【Excel】指定したセルの名前で...
-
ExcelのINDEXとMATCH関数でスピ...
-
Sub 要具ライフ() ActiveSheet....
-
VBAでActiveDirectoryのユーザ...
-
Excelで勤怠管理をしたいです。...
-
【VBA】配列に数式を仕込む方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、replace関数...
-
文字列の後ろから必要分だけ削...
-
UNICODE文字が含まれているかの...
-
ダブルクォーテーションを文字...
-
エクセル関数で記号から記号の...
-
文字列にアルファベットが何文...
-
awk で右端の文字を1文字削除...
-
strcmp( )関数について教えて...
-
C言語でギリシャ文字は使えます...
-
CSVの禁則文字
-
URLで使える文字・使えない...
-
vb.net IVSの漢字を1文字切り...
-
VS C++6.0のCString にて先頭1...
-
環境依存文字?をEnumで定義したい
-
GetDlgItemTextについて
-
アルファベットを含むランダム...
-
◆COUNTIF関数またはダブルクォ...
-
VB 文字判別
-
文字数と単語数を数えるプログラム
-
VBScriptでXcopyしたいのですが
おすすめ情報