Запись в файл

Запись в файл. 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){
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.

 

 

comments powered by Disqus

Интересное

Стив Джобс о Mac OS X:
«Я убежден в том, что половина того что отделяет успешных предпринимателей от неудачников — это настойчивость.».
Марк Эллиот Цукерберг:
«Люди всегда немного скептически относятся к чему-то быстрорастущему, но им нужно просто взглянуть на то, что делается.».
Марк Эллиот Цукерберг:
"Множество конфиденциальных вещей намного проще держать в централизованной системе."
Стив Джобс о операционной системе Google Android:
Мы не лезем в поиск, но они решили заняться телефонами. Не надо заблуждаться, они хотят уничтожить iPhone. Мы им не позволим.
Стив Джобс о Mac OS X:
«Мы сделали значки на экране такими красивыми, что вам захочется их лизнуть».


Курсы валют

bank-ua.com bank-ua.com bank-ua.com

Стоит взглянуть