Как создать файл 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, как делается в примере выше.
Java создать файл в папке
Мне понадобилось создать файл в папке, но какие бы методы не пробовал — пишут ошибку. Звучат они все примерно так:
(Системе не удается найти указанный путь)
так вот, у меня в проекте есть папка «Save» в ней нужно создать файл я пробовал вот такой вариант:
String filePath = new File("Save").getAbsolutePath(); FileWriter fstream = new FileWriter(filePath + "\\test.txt"); BufferedWriter out = new BufferedWriter(fstream);
и вот такой:
String filePath = new File("Save").getAbsolutePath(); File file = new File(filePath + "\\test.txt"); file.createNewFile();
всё бестолку. В интернете нечего толкового не нашёл. Заранее спасибо.
Как создать текстовый файл java
Для работы с файлами можно использовать методы из библиотеки java.nio.file. Библиотека предоставляет классы Path и Paths для работы с путями файлов, а также класс Files для манипулирования с файловой системой.
Сначала нужно сформировать путь к файлу с помощью класса Paths, например используя метод Paths.get(). Получившийся объект нужно использовать в методах класса Files.
Пример создания файла:
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; // Получаем путь к нужному файлу Path writeFilePath = Paths.get("/tmp/file.txt"); // Создаём файл Path createdFilePath = Files.createFile(writeFilePath); System.out.println("Файл создан: " + createdFilePath); // Записываем данные в файл String str = "Hello world!"; // Строку переводим в двоичный тип данных byte[] strToBytes = str.getBytes(); Files.write(createdFilePath, strToBytes);
Как создать файл java
Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако они предназначены прежде всего для работы с бинарными потоками данных, и их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer .
Запись файлов. Класс FileWriter
Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.
Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:
FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) FileWriter(String fileName) FileWriter(String fileName, boolean append)
Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.
Запишем в файл какой-нибудь текст:
import java.io.*; public class Program < public static void main(String[] args) < try(FileWriter writer = new FileWriter("notes3.txt", false)) < // запись всей строки String text = "Hello Gold!"; writer.write(text); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >
В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.
Чтение файлов. Класс FileReader
Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.
Для создания объекта FileReader мы можем использовать один из его конструкторов:
FileReader(String fileName) FileReader(File file) FileReader(FileDescriptor fd)
А используя методы, определенные в базом классе Reader, произвести чтение файла:
import java.io.*; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < // читаем посимвольно int c; while((c=reader.read())!=-1)< System.out.print((char)c); >> catch(IOException ex) < System.out.println(ex.getMessage()); >> >
Также мы можем считывать в промежуточный буфер из массива символов:
import java.io.*; import java.util.Arrays; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < char[] buf = new char[256]; int c; while((c = reader.read(buf))>0) < if(c < 256)< buf = Arrays.copyOf(buf, c); >System.out.print(buf); > > catch(IOException ex) < System.out.println(ex.getMessage()); >> >
В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.
Поскольку считанная порция файла может быть меньше 256 символов (например, в файле всего 73 символа), и если количество считанных данных меньше размера буфера (256), то выполняем копирование массива с помощью метода Arrays.copy. То есть фактически обрезаем массив buf, оставляя в нем только те символы, которые считаны из файла.