質問: '取得したファイル名', fileNameStr.substr(0, 256 - windowsPathLength); ```
回答: Maximum Path Length Limitationに > > In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character. > > > とあります。 * ドライブ名 * コロン`:` * ルートディレクトリの`\` * パス256文字 * NUL終端 を含めて260文字です。カウント方法としてはサロゲートペアは2文字となり。より具体的にはUTF-16エンコーディングで520バイトまでとなります。 実はファイル名としての制限ではなく、APIが受け付けるバッファーサイズとしての制限なので、あまり厳密ではなかったりします。 * ANSIバージョンの場合、260バイト制限を受けて、日本語Shift_JISで128文字程度になることがあったりなかったり * Unicodeバージョンの場合、`\\?\`プレフィックスを付けることで32,767文字に緩和されたり * Windows 10 1607のUnicodeバージョンの場合、設定を行えば`\\?\`プレフィックスを付けなくても32,767文字に緩和されたり といろいろあります。