Как переименовать файл в java
Перейти к содержимому

Как переименовать файл в java

  • автор:

Как переименовать java в jar?

Есть test.java файл с классами. Нужно этот файл переименовать в test.jar формат чтобы при двойном клике файл открывался. Я попробовал через IntelegiIde c build artifacts. Но там не сработало. Попробовал через командную строку с
java -jar test.jar. Там выдало ошибку : Error: Could not find or load main class jdk Caused by: java.lang.ClassNotFoundException: jdk. Есть ли еще способы или где я делаю ошибку?

  • Вопрос задан более года назад
  • 134 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 3
Михаил @Akela_wolf
Extreme Programmer

«Как переименовать .txt в .exe чтобы он двойным кликом открывался?»

  1. Компилируете java-файлы в классы (.class) используя javac (не java, а именно javac — компилятор)
  2. Добавляете к этому набору классов файл манифеста
  3. Опционально добавляете туда зависимости (если нужен fat jar)
  4. Собираете все это в zip-архив
  5. Меняете расширение на jar

В более-менее сложных проектах это все автоматизируется системой сборки, такой как gradle или maven.

Ответ написан более года назад
Нравится 1 2 комментария

maly222

Maly @maly222 Автор вопроса
Да я скомпилировал в .class. Но как добавить к классам манифест?
Михаил @Akela_wolf

Вам, чтобы файл запускался в первую очередь нужен атрибут Main-Class

azerphoenix

Орхан Гасанлы @azerphoenix Куратор тега Java
Java Software Engineer

Добрый день.
Думаю, что вам необходимо начать с изучения азов.
jar — это java архив.
java — это расширение файла до компиляции
class — это расширение файла после компиляции (где хранится байт-код)

Java — переименовать или переместить файл

Сначала мы рассмотрим использование классов Files и Path из NIO, затем класса Java File , Google Guava и, наконец, библиотеки Apache Commons IO.

Эта статья является частью серии « Java — Back to Basic » здесь, на ForEach.

2. Настройка​

В примерах мы будем использовать следующую настройку, которая состоит из двух констант для имени исходного и целевого файлов и шага очистки, позволяющего запускать тесты несколько раз:

 private final String FILE_TO_MOVE = "src/test/resources/originalFileToMove.txt";   private final String TARGET_FILE = "src/test/resources/targetFileToMove.txt";    @BeforeEach   public void createFileToMove() throws IOException    File fileToMove = new File(FILE_TO_MOVE);   fileToMove.createNewFile();   >    @AfterEach   public void cleanUpFiles()    File targetFile = new File(TARGET_FILE);   targetFile.delete();   > 

3. Использование классов путей и файлов NIO

Начнем с использования метода Files.move() из пакета Java NIO:

 @Test   public void givenUsingNio_whenMovingFile_thenCorrect() throws IOException    Path fileToMovePath = Paths.get(FILE_TO_MOVE);   Path targetPath = Paths.get(TARGET_FILE);   Files.move(fileToMovePath, targetPath);   > 

В JDK7 был значительно обновлен пакет NIO и добавлен класс Path . Это предоставляет методы для удобного управления артефактами файловой системы.

Обратите внимание, что и файл, и целевой каталог должны существовать.

4. Использование класса файлов

Давайте теперь посмотрим, как мы можем сделать то же самое, используя метод File.renameTo() :

 @Test   public void givenUsingFileClass_whenMovingFile_thenCorrect() throws IOException    File fileToMove = new File(FILE_TO_MOVE);   boolean isMoved = fileToMove.renameTo(new File(TARGET_FILE));   if (!isMoved)    throw new FileSystemException(TARGET_FILE);   >   > 

В этом примере файл, который нужно переместить, существует, как и целевой каталог.

Обратите внимание, что renameTo() генерирует только два типа исключений:

  • SecurityException — если менеджер безопасности запрещает запись в источник или в место назначения.
  • NullPointerException — в случае, если цель параметра равна нулю

Если цель не существует в файловой системе — исключение не будет выдано — и вам придется проверить возвращенный флаг успеха метода.

5. Использование гуавы

Далее — давайте взглянем на решение Guava, которое предоставляет удобный метод Files.move() :

 @Test   public void givenUsingGuava_whenMovingFile_thenCorrect()   throws IOException    File fileToMove = new File(FILE_TO_MOVE);   File targetFile = new File(TARGET_FILE);    com.google.common.io.Files.move(fileToMove, targetFile);   > 

Опять же, в этом примере файл, который нужно переместить, и целевой каталог должны существовать.

6. С вводом-выводом Commons

Наконец, давайте взглянем на решение с Apache Commons IO — возможно, самое простое:

 @Test   public void givenUsingApache_whenMovingFile_thenCorrect() throws IOException    FileUtils.moveFile(FileUtils.getFile(FILE_TO_MOVE), FileUtils.getFile(TARGET_FILE));   > 

Эта единственная строка, конечно же, позволит перемещать или переименовывать, в зависимости от того, совпадает ли целевой каталог или нет.

В качестве альтернативы — вот решение для конкретного перемещения, которое также позволяет нам автоматически создавать каталог назначения, если он еще не существует:

 @Test   public void givenUsingApache_whenMovingFileApproach2_thenCorrect() throws IOException    FileUtils.moveFileToDirectory(   FileUtils.getFile("src/test/resources/fileToMove.txt"),   FileUtils.getFile("src/main/resources/"), true);   > 

6. Заключение

В этой статье мы рассмотрели различные решения для перемещения файла в Java. В этих фрагментах кода мы сосредоточились на переименовании, но перемещение — это, конечно, то же самое, только целевой каталог должен быть другим.

Код примеров доступен на GitHub .

Java не удается переименовать файл

У меня есть массив байт, я создаю файл и записываю массив байт в этот файл, потом закрываю запись. Как запись закрыта я хочу переименовать расширение файла. Мой код:

FileOutputStream newFile = new FileOutputStream(rb_Path[0]+"\\"+file_id+".d"); //было .dat //Записать массив полученных байт в новый файл .dat newFile.write(byteNewFile); newFile.flush(); //Закрываем создание нового файла newFile.close(); File file_d = new File(rb_Path[0]+"\\"+file_id+".d"); //File file_dat = new File(rb_Path[0]+"\\"+file_id+".dat"); //file.d переименовать в file.dat boolean isRenamed = file_d.renameTo(new java.io.File(rb_Path[0] + "\\" + file_id + ".dat")); System.out.println(isRenamed); 

Но получаю false. И как итог не переименовался файл (1234.d на 1234.dat). Также пробовал так:

File file_d = new File(rb_Path[0]+"\\"+file_id+".d"); //Создан File file_dat = new File(rb_Path[0]+"\\"+file_id+".dat"); //Не создан, служит объектом для rename //file.d переименовать в file.dat boolean isRenamed = file_d.renameTo(file_dat); System.out.println(isRenamed); 
  • rb_Path[0] — не имеет некорректных символов.
  • file_id — это int, например 1234

Поэтому даже не знаю как быть.

Подскажите пожалуйста как можно решить такую задачу. Может стоит и вовсе делать все по другому? У кого есть решение? Заранее спасибо большое.

Переименование элементов модели

Помимо простого переименования элемента, когда вы просто изменяете его имя в панели Свойства, AnyLogic поддерживает механизм переименования элемента, производящий также соответствующее переименование всех ссылок на этот элемент в данной модели. Такое переименование не влияет на поведение модели, оставляя ее семантику прежней.

Это может пригодиться, например, в следующем случае: пусть вам нужно переименовать переменную, задействованную в системно динамической диаграмме потоков и накопителей (т.е. эта переменная используется в формулах других системно динамических переменных). Тогда если вы просто переименуете эту переменную, то соответствующие формулы станут некорректны, а если вы воспользуетесь механизмом переименования с заменой всех ссылок на элемент, то имя этой переменной будет изменено и во всех соответствующих формулах, и семантика диаграммы потоков и накопителей останется прежней.

Чтобы переименовать элемент модели (а также все ссылки на его имя)

  1. Щелкните правой кнопкой мыши по элементу в панели Проекты, выберите Переименовать из контекстного меню и в открывшемся диалоговом окне введите новое имя элемента в поле Новое имя. Если вы хотите предварительно просмотреть результаты планируемого переименования, оставьте выбранным флажок Предварительный просмотр изменений. Щелкните по кнопке Переименовать.
  2. Если AnyLogic настроен на показ предварительных результатов изменений, то появится диалоговое окно Предварительный просмотр результатов операции.
  3. Оставьте выделенными в списке Будут сделаны следующие изменения только те ссылки на элемент, которые вы хотите переименовать.
  4. Когда вы закончите, щелкните по кнопке OK.

Вы можете настроить показ предварительных результатов изменений с помощью флажка Всегда предварительно просматривать результаты в диалоговом окне Предварительный просмотр результатов операции или на странице Разработка настроек программы.

Быстрое переименование из панели Свойства

Можно переименовать элемент и все ссылки на него в модели прямо из свойства Имя элемента.

Чтобы переименовать элемент из панели Свойства

    Введите новое имя в поле Имя в панели Свойства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *