Перейти к содержимому

Как создать директорию в java

  • автор:

Как создать папку?

Вот у меня такой вопрос. Я хочу сделать 5 снимков с камеры и чтоб эти снимки сохранились в одной папке которая динамически должна создаться на CD карте. Я не до конца понимаю будет ли создаваться папка, или файлы просто сохраниться где то на CD карте? Мне нужно, чтоб создавалась одна папка и туда все созранялось, чтоб я мог хранить ссылку на эту папку и работать с ней(допустим удалять из нее все обьекты) у меня есть вот такой код

private static class ImageSaver implements Runnable < private final Image mImage; private File mFile = new File(Environment.getExternalStorageDirectory(), "pic.jpg"); public ImageSaver(Image image) < mImage = image; >@Override public void run() < ByteBuffer buffer = mImage.getPlanes()[0].getBuffer(); byte[] bytes = new byte[buffer.remaining()]; buffer.get(bytes); FileOutputStream output = null; try < output = new FileOutputStream(mFile); output.write(bytes); >catch (IOException e) < e.printStackTrace(); >finally < mImage.close(); if (null != output) < try < output.close(); >catch (IOException e) < e.printStackTrace(); >> > > 

Отслеживать
задан 16 мар 2016 в 14:42
11k 18 18 золотых знаков 64 64 серебряных знака 129 129 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В вашем случае все картинки будут сохраняться в один файл. А именно в pic.jpg. Для начала создайте папку используя функцию mkdir() :

File folder = new File(Environment.getExternalStorageDirectory() + File.separator + "pictures"); if (!folder.exists())

обычно для сохранения картинок используют какие-то уникальные названия. Чаще всего это дата и время в имени файла + .jpg

После всех операций создавайте новый файл, передав в его параметры значения, которые вы получили. Что-то типа такого :

File mFile = new File(folder, currentDateAndTime + ".jpg");//currentDateAndTime - это строка, созданная из даты и времени, типа 2016-03-16-18-00 

Как создать папку java

Для coздaния oднoгo кaтaлoгa пpeднaзнaчeн мeтoд mkdir() :

new File("C:\Directory").mkdir(); 

Для coздaния кaтaлoгa, a тaкжe вceх poдитeльcких кaтaлoгoв, пpeднaзнaчeн мeтoд mkdirs() :

new File("C:\Directory\SubDirectory1\SubDirectory2").mkdirs(); 

Oбa эти мeтoдa вoзвpaщaют бyлeвo знaчeниe: true ecли кaтaлoг (вo втopoм cлyчae — co вceми poдитeльcкими кaтaлoгaми) coздaн ycпeшнo и false пpи вoзникнoвeнии пpoблeм.

Шаг 1. Создание рабочей директории

В работе будет использоваться командная строка Windows и текстовый редактор Notepad++. С помощью командной строки мы будем создавать директории, компилировать исходный код, запускать программы. А в Notepad++ мы будем писать код программы. Повторите следующие действия.

1. Запустите командную строку windows.

Варианты запуска командной строки: 1) Нажать сочетание «windows+r», затем ввести «cmd» и нажать enter (работает для всех версий windows) 2) Нажать кнопку Пуск и ввести слова «cmd» или «Командная строка» (работает для windows 10, 8, 7) 3) Нажать кнопку Пуск – Все программы – Стандартные – Командная строка (работает для windows xp)

2. Создаем директорию (папку), в которой будет храниться файлы с исходным кодом и скомпилированные файлы.

Запустите командную строку, как показано в пункте 1. Для создания директории используется команда «mkdir» и имя директории. Имя директории и имя папки должны быть разделены пробелом. Для программирования нужно все директории и файлы должны иметь названия на латинице. Пусть директория, в которой будут находиться наши файлы, будет называться «java». Чтобы создать директорию, введите в командную строку «mkdir java» без кавычек и нажмите enter. Убедиться в том, что директория создана можно при помощи команды «dir». Будет выведен список файлов и папок с датами их создания. Внимание: в JAWS перемещение по тексту с результатами вывода командной строки осуществляется при помощи цифровой клавиатуры с выключенным режимом «Num Lock». Вывести список всех папок и файлов без дополнительной информации можно при помощи той же команды с параметром «B». Для этого введите «dir /B» и нажмите enter.

3. Входим в созданную папку.

Для перехода по папкам используется команда «cd» (сокращение от change directory – сменить директорию). Чтобы войти в директорию, нужно ввести команду «cd» и имя директории через пробел. Чтобы выйти из директории (подняться на уровень выше) введите «cd ..». Войдите в созданную папку «java». Для этого введите «cd java».

Кофе-брейк #193. Как создать генератор дерева каталогов на Java. Как работают конструкторы в Java

Кофе-брейк #193. Как создать генератор дерева каталогов на Java. Как работают конструкторы в Java - 1

Источник: Medium Благодаря этому руководству вы узнаете, как создать собственный генератор дерева каталогов на Java для визуализации и лучшей организации структуры файлов и папок. Если вы когда-либо использовали команду tree в терминале Windows, то вы наверняка знаете, насколько полезной может быть визуализация структуры каталога и всех его подкаталогов. Сейчас вы научитесь создавать собственный генератор дерева каталогов на Java. Это позволит вам легко визуализировать файлы и папки. Итак, приступим!

 import java.io.File; 

Эта строка импортирует класс File из пакета Java IO, который используется для представления файла или каталога в файловой системе.

 public class DirectoryTreeGenerator < public static void main ( String [] args ) < // Создание корневого каталога (root) File root = new File ( "/path/to/root/directory" ); // Вызов рекурсивной функции для печати дерева printDirectoryTree (root, "" ); >

У класса DirectoryTreeGenerator есть метод main , который является точкой входа в программу. Внутри метода main мы создаем объект File , представляющий корневой каталог дерева. Затем мы вызываем функцию printDirectoryTree , передавая корневой объект File и пустую строку в качестве аргументов. Это запустит рекурсивный процесс печати дерева.

 public static void printDirectoryTree(File folder, String indent) < // Печатаем имя папки System.out.println(indent + folder.getName()); // Получаем список всех файлов в каталоге File[] files = folder.listFiles(); // Если папка пуста, возвращаем if (files == null)

Функция printDirectoryTree принимает объект File , представляющий папку, и строку, представляющую текущий уровень отступа. Сначала она печатает имя папки, используя метод getName класса File . Затем с помощью метода listFiles мы получаем список всех файлов в папке и присваиваем результат массиву объектов File . Если папка пуста, функция возвращается, ничего не делая.

 // Добавляем отступ для каждого уровня дерева indent += " "; // Рекурсивно вызываем функцию для каждого подкаталога for (File file : files) < if (file.isDirectory()) < printDirectoryTree(file, indent); >> > > 

Если папка не пуста, функция добавляет отступ к текущему уровню отступа, представленному строкой indent . Затем она перебирает массив объектов File и проверяет с помощью метода isDirectory , является ли каждый из них каталогом. Если это каталог, функция вызывает себя рекурсивно, передавая в качестве аргументов объект File , представляющий подкаталог, и обновленный уровень отступа. Этот процесс повторяется до тех пор, пока не будут пройдены и напечатаны все подкаталоги.

 import java.io.File; public class DirectoryTreeGenerator < public static void main(String[] args) < // Создаем корневой каталог File root = new File("/path/to/root/directory"); // Вызов рекурсивной функции для печати дерева printDirectoryTree(root, ""); >public static void printDirectoryTree(File folder, String indent) < // Печать имени папки System.out.println(indent + folder.getName()); // Получаем список всех файлов в папке File[] files = folder.listFiles(); // Если папка пуста, возвращаем if (files == null) < return; >// Добавляем отступ для каждого уровня дерева indent += " "; // Рекурсивно вызываем функцию для каждого подкаталога for (File file : files) < if (file.isDirectory()) < printDirectoryTree(file, indent); >> > > 

Этот код использует рекурсивную функцию для перемещения по каталогам и подкаталогам, печатая имя каждой папки по пути. Параметр indent используется для добавления интервала к выходным данным, создавая визуальную древовидную структуру. Чтобы использовать этот код, просто замените "/path/to/root/directory" на путь к корневому каталогу, для которого вы хотите сгенерировать дерево. Затем запустите программу, и она выведет дерево на консоль.

Как работают конструкторы в Java

Кофе-брейк #193. Как создать генератор дерева каталогов на Java. Как работают конструкторы в Java - 2

Источник: Devgenius В этой статье рассмотрена работа конструкторов в Java, включая их синтаксис, типы и использование в примерах кода. Конструкторы в Java — это специальные методы, которые используются для инициализации объекта при его создании. Они имеют то же имя, что и класс, и не имеют возвращаемого типа. Синтаксис создания конструктора в Java:

 class ClassName < ClassName() < // код конструктора >> 

ClassName здесь является именем класса, а метод конструктора имеет то же имя, что и класс. При этом метод конструктора не имеет возвращаемого типа. Типы конструкторов . В Java есть два типа конструкторов: конструкторы по умолчанию и параметризованные конструкторы.

Конструкторы по умолчанию (Default Constructors)

Конструктор по умолчанию — это конструктор, который не принимает аргументов и создается компилятором, если в классе не определены другие конструкторы. Ниже приведен пример класса с конструктором по умолчанию:

 class Student < String name; int age; Student() < this.name = "Unknown"; this.age = 0; >> 

В этом примере конструктор по умолчанию инициализирует поля name и age значениями Unknown и 0 соответственно.

Параметризованные конструкторы (Parameterized Constructors)

Параметризованный конструктор — это конструктор, который принимает один или несколько аргументов. Ниже приведен пример класса с параметризованным конструктором:

 class Student < String name; int age; Student(String name, int age) < this.name = name; this.age = age; >> 

В данном примере параметризованный конструктор принимает два аргумента, name и age , и присваивает их соответствующим полям.

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

Конструкторы обычно используются для инициализации объекта при его создании. Перед вами пример использования конструктора для создания объекта:

 class Student < String name; int age; Student(String name, int age) < this.name = name; this.age = age; >> public class Main < public static void main(String[] args) < Student s1 = new Student("John", 25); System.out.println("Name: " + s1.name + ", Age: " + s1.age); >> 

В этом примере мы определили класс Student с параметризованным конструктором, который принимает два аргумента: name и age . Затем мы создаем объект класса Student , передавая John и 25 в качестве аргументов конструктору. Дальше мы выводим в консоль поля объекта name и age . Конструкторы также используются для перегрузки класса несколькими конструкторами.

 class Student < String name; int age; Student(String name) < this.name = name; this.age = 0; >Student(String name, int age) < this.name = name; this.age = age; >> 

Здесь мы создали два конструктора для класса Student . Первый конструктор принимает один аргумент name , а второй конструктор принимает два аргумента name .

Некоторые продвинутые концепции

Существует несколько более сложных концепций, связанных с конструкторами в Java, которые нам стоит обсудить. Ключевое слово this : в примерах, которые мы видели до сих пор, вы могли заметить использование ключевого слова this в конструкторах. Оно используется для ссылки на текущий объект и часто применяется для различения переменных экземпляра и локальных переменных или аргументов метода с одинаковыми именами. В конструкторах оно применяется для присвоения значений аргументов соответствующим переменным экземпляра. Ключевое слово super : ключевое слово super часто используется в конструкторе подкласса для вызова конструктора суперкласса. Оно полезно, когда подклассу необходимо инициализировать некоторые поля, унаследованные от суперкласса. Синтаксис вызова конструктора суперкласса:

 class SubclassName extends SuperclassName < SubclassName() < super(); >> 

Если нужно передать аргументы конструктору суперкласса, то это делается вот так:

 class SubclassName extends SuperclassName < SubclassName ( int arg) < super (arg); >> 

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

 class Student < String name; int age; Student() < this("Unknown"); >Student(String name) < this(name, 0); >Student(String name, int age) < this.name = name; this.age = age; >> 

Как видите, первый конструктор вызывает второй конструктор, который, в свою очередь, вызывает третий конструктор. Это пример цепочки конструкторов. Она полезна, если вы хотите повторно использовать код из одного конструктора в нескольких конструкторах. Частные конструкторы (Private constructors) . В Java конструкторы могут быть объявлены частными. Это означает, что конструктор может вызываться только другими методами внутри того же класса, и его нельзя использовать для создания объектов этого класса вне класса. Подобный вариант часто применяется в шаблоне Singleton , где класс может иметь только один экземпляр, и этот экземпляр создается закрытым конструктором. Вызов конструктора в наследовании (Constructor call in Inheritance) . Когда класс расширяет другой класс, подкласс автоматически наследует все не частные (non-private) поля и методы суперкласса. Однако конструкторы не наследуются подклассом. Вместо этого при создании подкласса вызывается конструктор суперкласса для инициализации полей, унаследованных от суперкласса. Это можно сделать с помощью ключевого слова super , как мы уже видели ранее. Если же подкласс явно не вызывает конструктор суперкласса с помощью ключевого слова super , то вызывается конструктор суперкласса по умолчанию. Важно отметить, что конструктор суперкласса вызывается перед конструктором подкласса, поэтому любая инициализация, которую необходимо выполнить для полей, унаследованных от суперкласса, должна выполняться в конструкторе суперкласса или в вызове super() в конструкторе подкласса. Например:

 class Person < String name; Person(String name) < this.name = name; >> class Student extends Person < int age; Student(String name, int age) < super(name); this.age = age; >> 

В этом примере класс Student расширяет класс Person и наследует поле name от класса Person . У класса Student есть собственный конструктор, который принимает два аргумента: name и age . В конструкторе мы используем ключевое слово super для вызова конструктора суперкласса, передавая ему аргумент name . Это инициализирует поле name , унаследованное от класса Person . Затем конструктор переходит к инициализации поля age , специфичного для класса Student .

Заключение

Конструкторы в Java — это специальные методы, используемые для инициализации объекта при его создании. Они имеют то же имя, что и класс, не имеют возвращаемого типа и используются для инициализации состояния объекта. Они могут быть стандартными, параметризованными, закрытыми, перегруженными, цепными и вызываемыми при наследовании. Понимание и правильное использование конструкторов — важная часть объектно-ориентированного программирования на Java.

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

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