Этот вопрос сильно отличается от проблемы внедрения SQL. В проблеме внедрения SQL, злонамеренно введенные параметры могут использоваться для выполнения команд в привилегированном контексте безопасности, поскольку пользователь database , под которым выполняются команды, обычно имеет карт-бланш-доступ для записи в строки в базе данных.
В приведенном вами примере ключевой вопрос: «каким пользователем будет выполняться код Java?». Если вы выполняете этот код как, например, скрипт CGI, то любой файл или каталог, в который пользователь процесса веб-сервера может записать, уязвим. Если вы просто запускаете это из командной строки, это действительно зависит от операционной системы (а не кода Java) для защиты файлов / каталогов, в которые пользователь не должен иметь возможность записи.
Если ваше намерение состоит в том, чтобы разрешить запись кода только в каталог пользователя, то остальные ответы верны. Однако я могу представить множество сценариев, в которых это может быть не так. например Возможно, вы пишете некоторый код для автоматического редактирования файла в каталоге / etc.
Короче говоря, вы хотите рассмотреть контекст, в котором будет выполняться ваш код, и какую безопасность будет обеспечивать этот контекст, и какую безопасность вам нужно будет обеспечить в вашем собственном коде в этом контексте.
PS - Вы обычно не хотите предполагать, что "/" является вашим разделителем каталогов. Java предоставляет для этой цели константу File.separator .