Запись в файл

Запись в файл. Files, Path, InputStream, OutputStream, Writer, Reader. 
Всем привет.Если мы расмотрели тему для чтения с файла то и нужно задеть тему записи в файлы. Тема очень обширная, но основные нюансы мы расмотрим. Как записать в файл я наведу пример. Сдесь очень много вариантов для раздумий. Для дополнителной информации Вы всегда можете заглянуть в доки)))). И так поехали.Для работы в этом напрвлении Вы должны быть знакомы с классами: InputStream and OutputStream vs Reader and Writer. Первая пара является для обработки операций в байтовом представлении, они читают и записывают байты. Тоесть мы подразумеваем что символ хранится в виде 1 байта. Тогда возникает вопросс а какже символы в Unicode – там ведь один символ можеть представляться несколькими байтами. Именно для этого и используется вторая пара классов. Она также разрешает при работе указать какую точно колировку файла Вы ипользуете.Обе пары классов имеют очень хорошую документацию. Там много вариатнов с тем использовать ли беферезации или нет. Универсальных методов нет, к какждой задаче необходимо подходить индивидуально. На коде мы привидем несколько примеров кода и Вы все увидите.Метод №1Просто вариант записи файла. Гланое не забывайте использовать метод close() and flush(). Для работы с файлами это очень важно. В ином случае Вы можете заблокировать файл и сделать его недоступным для работы остальным пользователям.
public static void writeMethod1(String source){ 
try {
PrintWriter out = new PrintWriter("/home/bismark/tmp/test.txt"); out.print(source);
out.close();
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeErrorException(null,e.getLocalizedMessage());
}
}

Метод №2

В этом варианте мы используем конструктор с параметром для flush() и тогда за Вас это сделает JVM и не стоит заботиться о том что Вы его забыли. 

public static void writeMethod2(String source){ 
try {
PrintWriter out = new PrintWriter(new PrintWriter("/home/bismark/tmp/ test.txt"), true); out.print(source); out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e.getLocalizedMessage());
}
}

Метод №3

В этом варианте пример записи в бинарном формате. Большой плюс это скорость работы. Минус конечно это то что читать такой файл вручную будет сложновато. Но решайте сами что Вам важнее. С использованием DataOutputStream Вы получаете в добавок следуещие методы:

writeBoolean(boolean v),

writeByte(int v),

writeShort(int v),

writeChar(int v),

writeInt(int v),

writeLong(long v),

writeFloat(float v),

writeDouble(double v),

writeBytes(String s),

writeChars(String s),

writeUTF(String str)

public static void writeMethod3(){ 
try {
DataOutputStream out = new DataOutputStream(new FileOutputStream("/ho me/bismark/tmp/t1.txt")); out.writeInt(Integer.valueOf(12));
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace(); throw new RuntimeException(e.getLocalizedMessage());
} catch (IOException e) {
e.printStackTrace(); throw new RuntimeException(e.getLocalizedMessage());
}
}

Метод №4

И также приме для чтения.

 public static void readMethod1(String path){ 
try {
DataInputStream input = new DataInputStream(new FileInputStream(path) );
System.out.println(input.readInt());
input.close();
} catch (FileNotFoundException e) {
e.printStackTrace(); throw new RuntimeException(e.getLocalizedMessage());
} catch (IOException e) {
e.printStackTrace(); throw new RuntimeException(e.getLocalizedMessage());
}
}

Я думаю что на 70% процентов Вам этого хватить для реализации операций записи в файлы. Если Вы пользуетесь Java 7 обратите внимание на пакеты Files, Path.

Please follow and like us:

Leave a Comment