Как создать папку?
Вот у меня такой вопрос. Я хочу сделать 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

Источник: 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

Источник: 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.