2016-12-22 13 views
1

Возможно ли использовать fopen в MATLAB или Octave для создания файла с именем, которое отличается в любом случае от существующего файла? В MATLAB R2016a и Octave 4.2.0 на MacOS 10.11.6, следующий код создает только FooBar.txt и пишет bar к нему (foobar.txt не создается):создание нового файла, чье имя отличается только от существующего файла с помощью matlab/octave fopen

fid = fopen('FooBar.txt', 'w'); 
fwrite(fid, 'foo', 'char'); 
fclose(fid); 
fid = fopen('foobar.txt', 'w'); 
fwrite(fid, 'bar', 'char'); 
fclose(fid); 
+3

Вы не можете. Формат файла OSX по умолчанию не чувствителен к регистру. – excaza

ответ

2

MATLAB может сделать это, но только на Linux. По умолчанию Windows и MacOS не относятся к делу.

NTFS и FAT (и варианты) являются case sensitive (для соответствия POSIX), но ядро ​​Windows не относится к случаю. В принципе, NTFS может содержать два файла с именем, которое отличается только в случае, но эти файлы не могут быть созданы и не дифференцированы Windows, если только вы не выполняете системные вызовы на гораздо более низком уровне, чем обычно в большинстве программ (читайте: взломать ").

HFS + на MacOS позорно is case-insensitive. Смысл, хотя ядро ​​MacOS может справиться с ним в принципе, файловая система не может. В настоящее время используется в MacOS Sierra (10.12), the experimental APFS is case sensitive, но я считаю, что поддержка всей системы для него отключена (хотя я мог ошибаться здесь). Хотя it can be enabled, я считаю, что чувствительность к регистру не согласуется с философией дизайна Apple (плюс, многие приложения явно предполагают случай в чувствительности и будут ломаться, если это изменится), поэтому я думаю, что более чем вероятно, что поддержка поддержки чувствительности к регистру будет расти постепенно сложнее в будущей версии.