Автор оригинала: 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