Java указать адрес файла

Формирование пути к файлу в Java

В данной статье мы рассмотрим три примера формирования пути к файлу в Java, используя при этом разные приемы:

  1. File.separator или System.getProperty(«file.separator») (Рекомендовано)
  2. File file = new File(workDir, filename) (Рекомендовано)
  3. Задание разделителя каталогов вручную (Не рекомендовано)

File.separator

Традиционный (и самый распространенный) способ формирования полного пути к файлу в мире Java — использование константы File.separator или вызов метода System.getProperty(«file.separator») . Оба этих способа приводят к одному результату — будет возвращен правильный разделитель каталогов в зависимости от операционной системы:

package ru.j4web.examples.java.io; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; public class FilePathExample1 < private static final String filename = "newfile.txt"; private static final String workDir = System.getProperty("user.dir"); public static void main(String[] args) < try < //final String fullFilename = workDir // + System.getProperty("file.separator") + filename; final String fullFilename = workDir + File.separator + filename; final File file = new File(fullFilename); if (file.createNewFile()) < System.out.println("Файл создан: " + file.getAbsolutePath()); >else < System.out.println("Ошибка создания файла: " + file.getAbsolutePath()); >> catch (IOException ex) < Logger.getLogger(FilePathExample1.class.getName()) .log(Level.SEVERE, null, ex); >> >

Вывод данной программы будет примерно таким:

Файл создан: C:ProjectsJ4Web.RuSrcJavaIOFilePathExample1newfile.txt

Использование конструктора new File()

Для получения полного пути к файлу можно воспользоваться конструктором класса File с двумя аргументами: путь к файлу и имя файла. После этого у вновь созданного объекта мы можем вызвать метод getAbsolutePath() , который вернет полный путь к файлу.

package ru.j4web.examples.java.io; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; public class FilePathExample2 < private static final String filename = "newfile.txt"; private static final String workDir = System.getProperty("user.dir"); public static void main(String[] args) < try < final File file = new File(workDir, filename); final String fullFilename = file.getAbsolutePath(); System.out.println("Полный путь к файлу: " + fullFilename); if(file.createNewFile()) < System.out.println("Файл создан."); >else < System.out.println("Не удалось создать файл."); >> catch (IOException ex) < Logger.getLogger(FilePathExample2.class.getName()) .log(Level.SEVERE, null, ex); >> >

Вывод программы будет примерно таким:

Полный путь к файлу: C:ProjectsJ4Web.RuSrcJavaIOFilePathExample2newfile.txt Файл создан.

Ручное указание разделителя каталогов

Исключительно в качестве развлечения для решения поставленной задачи можно использовать собственный алгоритм определения разделителя (очень не рекомендуется к применению):

package ru.j4web.examples.java.io; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; public class FilePathExample3 < private static final String filename = "newfile.txt"; private static final String workDir = System.getProperty("user.dir"); public static void main(String[] args) < final String fullFilename = workDir + getSeparator() + filename; File file = new File(fullFilename); System.out.println("Полный путь к файлу: " + file.getAbsolutePath()); try < if(file.createNewFile()) < System.out.println("Файл создан."); >else < System.out.println("Не удалось создать файл."); >> catch (IOException ex) < Logger.getLogger(FilePathExample3.class.getName()) .log(Level.SEVERE, null, ex); >> private static String getSeparator() < final String currentOS = System.getProperty("os.name").toLowerCase(); if (currentOS.contains("win")) < // Текущая операционная система - Windows return "\"; >else if (currentOS.contains("nix") || currentOS.contains("nux") || currentOS.contains("mac")) < // Текущая операционная система - Linux, MacOS или "другой Unix" return "/"; >// Мы не знаем, какая операционная система используется - возвращаем // значение по умолчанию return "/"; > >

Вывод программы на операционной системе Windows будет примерно таким:

Полный путь к файлу: C:ProjectsJ4Web.RuSrcJavaIOFilePathExample3newfile.txt Файл создан.

Полезная информация

  • Javadoc класса File
  • Как получить текущий каталог в Java программе
  • Как определить текущую операционную систему в Java программе
Читайте также:  Python for json array

Источник

Как указать путь к файлу в java

Чтобы указать путь к файлу в Java , можно использовать класс java.io.File . Существует несколько способов задания пути:

File file = new File("/path/to/file.txt"); // Здесь /path/to/file.txt - абсолютный путь к файлу. 

Относительный путь от текущего каталога:

File file = new File("file.txt"); // Здесь file.txt - файл, расположенный в текущем каталоге. 

Относительный путь от корня проекта:

File file = new File("src/main/resources/file.txt"); 

Источник

Как построить путь к файлу в Java

В этом руководстве мы покажем вам три примера Java для построения пути к файлу:

  1. File.separator or System.getProperty(“file.separator”) (Recommended)
  2. Файл файл = новый файл (рабочий каталог, имя файла); (Рекомендуемые)
  3. Создайте разделитель файлов вручную. (Не рекомендую, просто для удовольствия)

1. File.separator

Классический пример Java для создания пути к файлу с использованием File.separator или System.getProperty(«file.separator») . Оба будут проверять ОС и правильно возвращать разделитель файлов, например,

package com.example.file; import java.io.File; import java.io.IOException; public class FilePathExample1 < public static void main(String[] args) < try < String filename = "newFile.txt"; String workingDirectory = System.getProperty("user.dir"); //****************// String absoluteFilePath = ""; //absoluteFilePath = workingDirectory + System.getProperty("file.separator") + filename; absoluteFilePath = workingDirectory + File.separator + filename; System.out.println("Final filepath : " + absoluteFilePath); //****************// File file = new File(absoluteFilePath); if (file.createNewFile()) < System.out.println("File is created!"); >else < System.out.println("File is already existed!"); >> catch (IOException e) < e.printStackTrace(); >> >
Final filepath : /Users/example/Documents/workspace/maven/fileUtils/newFile.txt File is created!

2. новый файл()

Некоторые разработчики используют API new File() для построения пути к файлу.

package com.example.file; import java.io.File; import java.io.IOException; public class FilePathExample2 < public static void main(String[] args) < try < String filename = "newFile.txt"; String workingDirectory = System.getProperty("user.dir"); //****************// File file = new File(workingDirectory, filename); //****************// System.out.println("Final filepath : " + file.getAbsolutePath()); if (file.createNewFile()) < System.out.println("File is created!"); >else < System.out.println("File is already existed!"); >> catch (IOException e) < e.printStackTrace(); >> >
Final filepath : /Users/example/Documents/workspace/maven/fileUtils/newFile.txt File is created!

3. Ручной разделитель файлов

Проверьте системную ОС и создайте путь к файлу вручную, просто для удовольствия, не рекомендую.

package com.example.file; import java.io.File; import java.io.IOException; public class FilePathExample3 < public static void main(String[] args) < try < String filename = "testing.txt"; String workingDir = System.getProperty("user.dir"); String absoluteFilePath = ""; //****************// String your_os = System.getProperty("os.name").toLowerCase(); if (your_os.indexOf("win") >= 0) < //if windows absoluteFilePath = workingDir + "\\" + filename; >else if (your_os.indexOf("nix") >= 0 || your_os.indexOf("nux") >= 0 || your_os.indexOf("mac") >= 0) < //if unix or mac absoluteFilePath = workingDir + "/" + filename; >else < //unknow os? absoluteFilePath = workingDir + "/" + filename; >System.out.println("Final filepath : " + absoluteFilePath); //****************// File file = new File(absoluteFilePath); if (file.createNewFile()) < System.out.println("Done"); >else < System.out.println("File already exists!"); >> catch (IOException e) < e.printStackTrace(); >> >
Final filepath : /Users/example/Documents/workspace/maven/fileUtils/newFile.txt File is created!

Рекомендации

Источник

Java указать адрес файла

Класс File, определенный в пакете java.io, не работает напрямую с потоками. Его задачей является управление информацией о файлах и каталогах. Хотя на уровне операционной системы файлы и каталоги отличаются, но в Java они описываются одним классом File.

В зависимости от того, что должен представлять объект File — файл или каталог, мы можем использовать один из конструкторов для создания объекта:

File(String путь_к_каталогу) File(String путь_к_каталогу, String имя_файла) File(File каталог, String имя_файла)
// создаем объект File для каталога File dir1 = new File("C://SomeDir"); // создаем объекты для файлов, которые находятся в каталоге File file1 = new File("C://SomeDir", "Hello.txt"); File file2 = new File(dir1, "Hello2.txt");

Класс File имеет ряд методов, которые позволяют управлять файлами и каталогами. Рассмотрим некоторые из них:

  • boolean createNewFile() : создает новый файл по пути, который передан в конструктор. В случае удачного создания возвращает true, иначе false
  • boolean delete() : удаляет каталог или файл по пути, который передан в конструктор. При удачном удалении возвращает true.
  • boolean exists() : проверяет, существует ли по указанному в конструкторе пути файл или каталог. И если файл или каталог существует, то возвращает true, иначе возвращает false
  • String getAbsolutePath() : возвращает абсолютный путь для пути, переданного в конструктор объекта
  • String getName() : возвращает краткое имя файла или каталога
  • String getParent() : возвращает имя родительского каталога
  • boolean isDirectory() : возвращает значение true, если по указанному пути располагается каталог
  • boolean isFile() : возвращает значение true, если по указанному пути находится файл
  • boolean isHidden() : возвращает значение true, если каталог или файл являются скрытыми
  • long length() : возвращает размер файла в байтах
  • long lastModified() : возвращает время последнего изменения файла или каталога. Значение представляет количество миллисекунд, прошедших с начала эпохи Unix
  • String[] list() : возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге
  • File[] listFiles() : возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге
  • boolean mkdir() : создает новый каталог и при удачном создании возвращает значение true
  • boolean renameTo(File dest) : переименовывает файл или каталог

Работа с каталогами

Если объект File представляет каталог, то его метод isDirectory() возвращает true . И поэтому мы можем получить его содержимое — вложенные подкаталоги и файлы с помощью методов list() и listFiles() . Получим все подкаталоги и файлы в определенном каталоге:

import java.io.File; public class Program < public static void main(String[] args) < // определяем объект для каталога File dir = new File("C://SomeDir"); // если объект представляет каталог if(dir.isDirectory()) < // получаем все вложенные объекты в каталоге for(File item : dir.listFiles())< if(item.isDirectory())< System.out.println(item.getName() + " \t folder"); >else < System.out.println(item.getName() + "\t file"); >> > > >

Теперь выполним еще ряд операций с каталогами, как удаление, переименование и создание:

import java.io.File; public class Program < public static void main(String[] args) < // определяем объект для каталога File dir = new File("C://SomeDir//NewDir"); boolean created = dir.mkdir(); if(created) System.out.println("Folder has been created"); // переименуем каталог File newDir = new File("C://SomeDir//NewDirRenamed"); dir.renameTo(newDir); // удалим каталог boolean deleted = newDir.delete(); if(deleted) System.out.println("Folder has been deleted"); >>

Работа с файлами

Работа с файлами аналогична работе с каталога. Например, получим данные по одному из файлов и создадим еще один файл:

import java.io.File; import java.io.IOException; public class Program < public static void main(String[] args) < // определяем объект для каталога File myFile = new File("C://SomeDir//notes.txt"); System.out.println("File name: " + myFile.getName()); System.out.println("Parent folder: " + myFile.getParent()); if(myFile.exists()) System.out.println("File exists"); else System.out.println("File not found"); System.out.println("File size: " + myFile.length()); if(myFile.canRead()) System.out.println("File can be read"); else System.out.println("File can not be read"); if(myFile.canWrite()) System.out.println("File can be written"); else System.out.println("File can not be written"); // создадим новый файл File newFile = new File("C://SomeDir//MyFile"); try < boolean created = newFile.createNewFile(); if(created) System.out.println("File has been created"); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

При создании нового файла метод createNewFile() в случае неудачи выбрасывает исключение IOException , поэтому нам надо его отлавливать, например, в блоке try. catch, как делается в примере выше.

Источник

Оцените статью