Автор оригинала: Pankaj Kumar.
Файловая машина Java
- Класс пишущей машинки Java является частью
java.io
посылка. - Файловая машина является подклассом
java.io.OutputStreamWriter
класса. - Файловая машинка предназначена для записи потоков символов.
- Файловая машинка используется для записи в символьные файлы. Его методы
write()
позволяют записывать символы или строки в файл. - Записи файлов обычно оборачиваются объектами записи более высокого уровня, такими как BufferedWriter или
PrintWriter
, которые обеспечивают более высокую производительность и более гибкие методы записи данных более высокого уровня.
Конструкторы пишущих машин
Файловая машина(файловый файл)
: Создаетфайловую машину
объект, используя указанный Файл объект. Он создает исключениеIOException
, если файл существует, но является каталогом, а не обычным файлом, или не существует, но не может быть создан, или не может быть открыт по какой-либо другой причине.Файловая машина(файловый файл, логическое добавление)
: Создает файловую машину объект, используя указанный Файл объект. Если второй аргумент верен, то байты будут записываться в конец файла, а не в начало. Он создает исключение IOException , если файл существует, но является каталогом, а не обычным файлом, или не существует, но не может быть создан, или не может быть открыт по какой-либо другой причине.Пишущая машинка(FileDescriptor fd)
: Создает объект пишущей машинки, связанный с указанным файловым дескриптором.Пишущая машинка(строковое имя файла)
: Создает объект пишущей машинки, используя указанное имя файла. Он создает исключениеIOException
, если именованный файл существует, но является каталогом, а не обычным файлом, или не существует, но не может быть создан, или не может быть открыт по какой-либо другой причине.Пишущая машинка(строковое имя файла, логическое добавление)
: Создает объект пишущей машинки, используя указанное имя файла с логическим значением, указывающим, следует ли добавлять записанные данные. Если второй аргумент верен, то данные будут записаны в конец файла, а не в начало. Он создает исключение IOException, если именованный файл существует, но является каталогом, а не обычным файлом, или не существует, но не может быть создан, или не может быть открыт по какой-либо другой причине.
Пример файловой машины Java
Файловая машина наследует метод java.io.OutputStreamWriter
и java.io.Writer
классов.
Давайте рассмотрим приведенные ниже методы с примерами.
запись(int c)
Этот метод записывает один символ, указанный в int c .
package com.journaldev.io.filewriter; import java.io.FileWriter; import java.io.IOException; /** * Java write file using FileWriter write method * * @author pankaj * */ public class FileWriterWriteIntExample { public static void main(String[] args) { FileWriter fileWriter = null; try { fileWriter = new FileWriter("D:/data/file.txt"); //inherited method from java.io.OutputStreamWriter fileWriter.write(65); fileWriter.write(66); fileWriter.write(67); } catch (Exception e) { e.printStackTrace(); }finally { try { if (fileWriter != null) { fileWriter.flush(); fileWriter.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
Пишущая машинка реализует автоклавируемый
интерфейс, поэтому мы можем использовать попробовать с ресурсами при использовании класса пишущей машинки.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter write method using try with resource * * @author pankaj * */ public class FileWriterWriteIntTryWithResource { public static void main(String[] args) { try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.OutputStreamWriter fileWriter.write(65); fileWriter.write(66); fileWriter.write(67); } catch (Exception e) { e.printStackTrace(); } } }
Примечание : В приведенной выше программе FileWriter.write(65)
запишет A в файл, потому что 65 является десятичным значением для символа A, следовательно, целое число 65 будет преобразовано в символ A и то же самое для другого.
запись(Строка str, int off, int len)
Этот метод записывает часть строки str
из int off
в int len
.
- str: Строка для записи
- выкл.: Смещение, с которого следует начинать чтение символов
- len: Количество символов, которые необходимо записать
Если значение параметра len отрицательное, то символы не записываются.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter write(String s, int off, int len) method * * @author pankaj * */ public class FileWriterWriteStringExample { public static void main(String[] args) { String data = "This is FileWriter Example."; try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.OutputStreamWriter fileWriter.write(data, 8, 10); } catch (Exception e) { e.printStackTrace(); } } }
запись(char[] cbuf, int off, int len)
Этот метод записывает часть массива символов, указанных в char[] cbuf
, из int off
в int len
.
- cbuf: Массив символов
- выкл.: Смещение, с которого следует начинать чтение символов
- лен: Количество символов для записи
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter write(char[] cbuf, int off, int len) method * * @author pankaj * */ public class FileWriterWriteCharArray { public static void main(String[] args) { char[] data = "This is FileWriter Example.".toCharArray(); try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.OutputStreamWriter fileWriter.write(data, 8, 10); } catch (Exception e) { e.printStackTrace(); } } }
написать(char[] cbuf)
Этот метод записывает массив символов, указанный cbuf.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter write(char[] cbuf) method * * @author pankaj * */ public class FileWriterWriteCharArrayExample { public static void main(String[] args) { char[] data = "This is FileWriter Example.".toCharArray(); try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.Writer fileWriter.write(data); } catch (Exception e) { e.printStackTrace(); } } }
запись(Строка str)
Этот метод записывает строковое значение в файл, указанный в str
.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter write(String str) method * * @author pankaj * */ public class FileWriterWriteString { public static void main(String[] args) { try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.Writer fileWriter.write("JournalDev"); } catch (Exception e) { e.printStackTrace(); } } }
добавить(символ c)
Этот метод добавляет указанный символ в эту запись, где c
является 16-разрядным символом для добавления.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file using FileWriter append(char c) method * * @author pankaj * */ public class FileWriterAppendCharacter { public static void main(String[] args) { try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.Writer fileWriter.write("JournalDev"); fileWriter.append('C'); } catch (Exception e) { e.printStackTrace(); } } }
смыть()
Этот метод очищает поток. Когда вызывается метод flush ()
, он немедленно записывает данные в выходной файл.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file with FileWriter flush() method * * @author pankaj * */ public class FileWriterFlushExample { public static void main(String[] args) { try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.Writer fileWriter.write("JournalDev"); //inherited method from java.io.OutputStreamWriter fileWriter.flush(); fileWriter.write(" Tutorials"); fileWriter.flush(); } catch (Exception e) { e.printStackTrace(); } } }
закрыть()
Этот метод очищает поток перед его закрытием. Как только поток будет закрыт, вызов метода write()
или flush()
вызовет исключение IOException
. Закрытие ранее закрытого потока не имеет никакого эффекта.
package com.journaldev.io.filewriter; import java.io.FileWriter; /** * Java write file with FileWriter close() method * * @author pankaj * */ public class FileWriterCloseExample { public static void main(String[] args) { try(FileWriter fileWriter = new FileWriter("D:/data/file.txt")) { //inherited method from java.io.Writer fileWriter.write("JournalDev"); //inherited method from java.io.OutputStreamWriter fileWriter.close();; fileWriter.write(" Tutorials"); } catch (Exception e) { e.printStackTrace(); } } }
Выход:
java.io.IOException: Stream closed at sun.nio.cs.StreamEncoder.ensureOpen(Unknown Source) at sun.nio.cs.StreamEncoder.write(Unknown Source) at sun.nio.cs.StreamEncoder.write(Unknown Source) at java.io.OutputStreamWriter.write(Unknown Source) at java.io.Writer.write(Unknown Source) at com.journaldev.examples.FileWriterCloseExample.main(FileWriterCloseExample.java:20)
Файловая машина против потока вывода файла
- Файловая машина предназначена для записи потоков символов, в то время как FileOutputStream используется для записи потоков необработанных байтов.
- Файловая машина имеет дело с 16-битными символами, в то время как поток вывода файлов имеет дело с 8-битными байтами.
- Файловая машина может обрабатывать строки в Юникоде, в то время как FileOutputStream записывает байты в файл и не принимает символы или строки, поэтому ее необходимо завернуть в
OutputStreamWriter
, чтобы принимать строки.
Также проверьте файл записи java для получения дополнительной информации о том, как записать файл на java.
Это все для Java-пишущей машинки, я надеюсь, что здесь не пропущено ничего важного.
Ссылка: API Doc