Шаг 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».
Как создать папку?
Вот у меня такой вопрос. Я хочу сделать 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 серебряных знака 128 128 бронзовых знаков
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м.
Файлы и директории, класс File
Класс File пакета java.io используется для управления информацией о файлах и каталогах. На уровне операционной системы файлы и каталоги имеют существенные отличия, но в Java они описываются одним классом File. Каталог в Java трактуется как обычный файл, но с дополнительным свойством — списком имен файлов, который можно просмотреть с помощью метода list.
В зависимости от назначения объект File — файл или каталог, можно использовать один из конструкторов для создания объекта:
File (String путь_к_каталогу); File (String путь_к_каталогу, String имя_файла); File (File каталог, String имя_файла);
Примеры создания объектов File
// Создание File для каталога File dir = new File("C://dir_test"); // Создание File для файлов, которые находятся в каталоге File file1 = new File("C://dir_test", "Hello1.txt"); File file2 = new File(dir, "Hello2.txt");
Свойства и методы класса File
Для определения стандартных свойств файла в классе File имеются различные методы. Однако класс File несимметричен, т.е. методы определения свойств объекта существуют, но соответствующие функции для изменения этих свойств отсутствуют.
| Функции | Описание |
|---|---|
| String getName() | Наименование файла или каталога. |
| String getParent() | Наименование родительского каталога. |
| long length() | Функция определения размера файла в байтах. |
| String getAbsolutePath() | Функция определения абсолютного пути файла или каталога. |
| boolean delete() | Удаления файла или каталога. |
| boolean exists() | Проверка существования файла или каталога. |
| boolean isDirectory() | Проверка, является ли данный объект каталогом. |
| boolean isFile() | Проверка, является ли данный объект файлом. |
| long lastModified() | Функция определения даты последней модификации файла. |
| boolean canRead() | Проверка, можно ли читать данные из файла. |
| boolean canWrite() | Проверка, можно ли записывать данные в файл. |
| boolean isHidden() | Проверка, являются ли каталог или файл скрытыми. |
| String[] list() | Чтение массива наименований файлов и подкаталогов. |
| File[] listFiles() | Чтение массива файлов и подкаталогов. |
| boolean mkdir() | Создание нового каталога. |
| boolean renameTo(File dest) | Переименовывание файла или каталога. |
В следующем примере открываем файл «d:/test/MyFile.txt» (Windows) и извлекаем его характеристики:
import java.io.File; public class FileTest < public static void main(String args[]) < File fl = new File("d:\\test\\MyFile.txt"); System.out.println ("Имя файла: " + fl .getName()); System.out.println ("Путь: " + fl.getPath()); System.out.println ("Полный путь: " + fl.getAbsolutePath()); System.out.println ("Родительский каталог: " + fl.getParent()); System.out.println (fl.exists() ? "Файл существует" : "Файл не существует"); System.out.println (fl.canWrite() ? "Свойство - можно записывать" : "Свойство - нельзя записывать"); System.out.println (fl.canRead() ? "Свойство - можно читать" : "Свойство - нельзя читать"); System.out.println ("Это директория ? " + (fl.isDirectory() ? "да": " нет")); System.out.println ("Это обычный файл ? " + (fl.isFile() ? "да" : "нет")); System.out.println ("Последняя модификация файла : " + fl. lastModified()); System.out.println ("Размер файла : " + fl.length() + " bytes"); >>
В консоли будет отпечатана следующая информация:
Имя файла: MyFile.txt Путь: d:\test\MyFile.txt Полный путь: d:\test\MyFile.txt Родительский каталог: d:\test Файл существует Свойство - можно записывать Свойство - можно читать Это директория ? нет Это обычный файл ? да Последняя модификация файла : 1441710053162 Размер файла : 12 bytes
Интерфейс FileFilter
Класс File включает метод, позволяющий прочитать список только определенных файлов.
public File[] listFiles(FileFilter filter)
В отличие от одноименного метода, но без параметра, данный метод отбирает только те файлы каталога, которые удовлетворяют определенному условию. Параметр filter предназначен для задания этого условия. При этом тип параметра FileFilter — это не класс, а интерфейс, который имеет всего один метод, возвращающий true, если файл удовлетворяет определенным условиям, и false в противном случае.
public boolean accept(File pathname)
Метод listFiles будет вызывать метод accept для каждого файла в каталоге, и те, для которых accept вернет true, будут включены в результирующий список. Остальные будут проигнорированы.
Для использования FileFilter необходимо создать объект и определить в нем соответствующий метод accept.
class Filter implements FileFilter < String[] ext; Filter(String ext) < this.ext = ext.split(","); >private String getExtension(File pathname) < String filename = pathname.getPath(); int i = filename.lastIndexOf('.'); if ((i >0) && (i < filename.length()-1)) < return filename.substring(i+1).toLowerCase(); >return ""; > public boolean accept(File pathname) < if (!pathname.isFile()) return false; String extension = getExtension(pathname); for (String e : ext) < if (e.equalsIgnoreCase(extension)) return true; >return false; > >
Пример использования фильтра FileFilter
import java.io.File; import java.io.FileFilter; public class FileTest < public static void main(String args[]) < // Определение директории File dir = new File("."); // Чтение полного списка файлов каталога File[] lst1 = dir.listFiles(); // Чтение списка файлов каталога // с расширениями "png" и "jpg" File[] lst2 = dir.listFiles(new Filter("png,jpg")); System.out.println ("lst1.length = " + lst1.length + ", lst2.length = " + lst2.length); >>
Чтение содержимого файла FileInputStream
Для чтения содержимого файла можно использовать класс FileInputStream, который является наследником класса InputStream и реализует все его методы. Конструктор класса FileInputStream :
FileInputStream(String fileName) throws FileNotFoundException
Если файл не может быть открыт то генерируется исключение FileNotFoundException.
Пример считывания данных из файла и вывод содержимого в консоль:
import java.io.FileInputStream; public class FilesApp < public static void main(String[] args) < try < FileInputStream fis; fis=new FileInputStream("C:\\test_dir\\test.txt"); System.out.println("Размер файла: " + fis.available() + " байт(а)"); int i = -1; while(( i = fis.read()) != -1)< System.out.print((char)i); >fis.close(); > catch(IOException e) < System.out.println(e.getMessage()); >> >
Данные файла можно считать в массив байтов :
byte[] buffer = new byte[fis.available()]; // чтение файла в буфер fis.read (buffer, 0, fis.available()); System.out.println («Содержимое файла:»); for(int i = 0; i
Класс FileInputStream предназначен прежде всего для работы с двоичными файлами. Его можно использовать для работы с текстовыми файлами, но все же для этой задачи больше подходят другие классы.
Пример использования FileInputStream для чтения файла свойств в кодировке UTF-8:
Файл свойств «data.properties» в кодировке UTF-8:
# # Параметры сервера SMTP # company=Рога и копыта manager=Остап Бендер
import java.io.Reader; import java.io.IOException; import java.io.InputStream; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.Properties; public class Main < public static void main(String[] args) < try < InputStream is; is = new FileInputStream("data.properties"); if (is != null) < Reader reader; reader = new InputStreamReader(is, "UTF-8"); Properties props = new Properties(); props.load(reader); System.out.println ( props.getProperty ("company") + ", " props.getProperty ("manager")); is.close(); >> catch (IOException e) < e.printStackTrace(); >> >
Запись в файл FileOutputStream
Класс FileOutputStream, является производным от класса OutputStream, поэтому наследует всю его функциональность.
Пример записи строки в файл:
import java.io.FileOutputStream; public class FilesApp < public static void main(String[] args) < String text = "Hello world!"; // строка для записи try < FileOutputStream fos; fos=new FileOutputStream("C:\\test_dir\\test.txt"); // перевод строки в байты byte[] buffer = text.getBytes(); fos.write(buffer, 0, buffer.length); >catch(IOException e) < System.out.println(e.getMessage()); >> >
Для создания объекта FileOutputStream используется конструктор, принимающий в качестве параметра путь к файлу для записи. Для записи строки ее сначала переводим в массив байт и с помощью метода write строка записывается в файл. Необязательно записывать весь массив байтов. Используя перегрузку метода write(), можно записать и одиночный байт:
fos.write(buffer[0]); // запись только первого байта
Пример перезаписи содержимого из одного файла в другой:
import java.io.FileInputStream; import java.io.FileOutputStream; public class FilesApp < public static void main(String[] args) < try < FileInputStream fis; FileOutputStream fos; fis=new FileInputStream("C:\\test_dir\\test.txt"); fos=new FileOutputStream("C:\\test_dir\\new.txt"); byte[] buffer = new byte[fis.available()]; // считываем буфер fis.read(buffer, 0, buffer.length); // записываем из буфера в файл fos.write(buffer, 0, buffer.length); fis.close(); fos.close(); >catch(IOException e) < System.out.println(e.getMessage()); >> >
Класс FileOutputStream предназначен прежде всего для записи двоичных файлов. Его можно использовать для работы с текстовыми файлами, но все же для этой задачи больше подходят другие классы.