Как ввести NULL CHARACTER в имя файла на ma c? - PullRequest
1 голос
/ 08 мая 2020

Я хочу создать файл с нулевым символом в его имени на ma c. имя файла вроде - abc \ 0ds.txt Я попытался создать файл с именем 'abc \ 0ahd.txt', но \ 0 в имени на самом деле не является нулевым символом Юникода. Это какой-то другой персонаж. Я хочу создать файл с нулевым символом в его имени, потому что я хочу воспроизвести сценарий для интеграционных тестов моего приложения, которое использует fileItemStream.getName () (org. apache .commons.fileupload.FileUploadBase) для получения имени файла, а затем он должен генерировать исключение InvalidFileNameException (org. apache .commons.fileupload.InvalidFileNameException)

Мы получаем такой сценарий ios в производстве и получаем журналы типа «org. apache .commons.fileupload.InvalidFileNameException: Недопустимое имя файла: uploadertest.asp \ 0.png ", но я не могу воспроизвести это, загрузив файл из моей системы или тесты интеграции, но он воспроизводится из модульных тестов, когда я отправляю поток байтов таким образом.

byte[] formData = getFormData(boundary, defaultFormParams, invalidFileNameWithNullCharacter);

MockHttpServletRequestBuilder request = getRequest(boundary, formData);

1 Ответ

0 голосов
/ 10 мая 2020

Итак, я получил ответ. Это «НЕТ, я никогда не смогу создать файл с нулевым символом в его имени». Если кто-то попытается создать файл с нулевым символом в имени, то UNIX не позволит этого и выдаст исключение ниже, если попытается использовать java code

Exception in thread "main" java.nio.file.InvalidPathException: Nul character not allowed: /Users/hhims/Documents/TestCode/a.txt
    at sun.nio.fs.UnixPath.checkNotNul(UnixPath.java:93)
    at sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:83)
    at sun.nio.fs.UnixPath.<init>(UnixPath.java:71)
    at sun.nio.fs.UnixFileSystem.getPath(UnixFileSystem.java:281)
    at java.io.File.toPath(File.java:2234)
    at sun.nio.fs.UnixUriUtils.fromUri(UnixUriUtils.java:61)
    at sun.nio.fs.UnixFileSystemProvider.getPath(UnixFileSystemProvider.java:98)
    at java.nio.file.Paths.get(Paths.java:138)
    at Main.testExists(Main.java:35)
    at Main.main(Main.java:24)

Для решения моей проблемы я создал поток байтов, установил имя и границу файла и сделал http-запрос. Не удалось сохранить файл на диск, так как это невозможно.

...