Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
67
Добавлен:
08.06.2015
Размер:
837.63 Кб
Скачать

Группа байтовых потоков Data

Интерфейсы DataInput и DataOutput содержат объявления методов ввода и вывода значений

простых типов

void writeLong(long v), void writeFloat(float v) boolean readBoolean(), String readUTF()

Обертки DataInputStream и DataOutputStream, соответственно, реализуют эти интерфейсы

Класс RandomAccessFile реализует оба интерфейса Data и позволяет работать с файлами в режиме произвольного доступа

31

Группа байтовых потоков Data

DataInputStream input = new DataInputStream(

new FileInputStream("binary.file")); int byteVal = input.read();

int intVal = input.readInt(); float floatVal = input.readFloat();

double doubleVal = input.readDouble(); input.close();

DataOutputStream output = new DataOutputStream(

new FileOutputStream("binary.file"));

output.write(10);

//byte data

output.writeInt(1000);

//int data

output.writeDouble(1000.123);

//double data

output.close();

 

32

Класс File

Инкапсулирует платформенно-независимые методы работы с файлами и директориями:

создание, переименование, удаление

проверка типа пути: файл или каталог

проверка атрибутов файлов и каталогов

проверка существования файлов и каталогов

Позволяет создавать временные файлы, удаляемые при завершении работы программы

Определяет доступ лишь к метаданным файловой системы

для чтения или записи используются потоки данных

33

Класс File

File obj = new File("D:\\data"); if (obj.mkdir() && obj.exists()) {

obj = new File("D:\\data\\file.txt");

if (obj.createNewFile() && obj.exists()) {

File newObj = new File("D:\\data\\newfile.txt"); obj.renameTo(newObj);

System.out.println("Can write is " + newObj.canWrite() + " for file " +

newObj.getPath());

newObj.delete();

}

obj = obj.getParentFile(); obj.delete();

}

34

Пример записи в текстовый файл

import java.io.*;

public class TextWrite {

public static void main(String[] args) { int[] values = {1, 2, 3, 4, 5};

try {

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("out.txt")));

for (int i = 0; i < values.length; i++) { out.println(values[i]);

}

out.close();

}

catch(IOException e) { System.out.println("Some error occurred!");

}

}

}

out.txt

Текстовая форма

1

2

3

4

5

out.txt

Байтовая форма

31 0D 0A

32 0D 0A

33 0D 0A

34 0D 0A

35 0D 0A

35

Пример чтения из текстового файла и из консоли

import java.io.*;

public class TextRead {

public static void main(String[] args) { int[] values = new int[5];

try {

BufferedReader in = new BufferedReader(new FileReader("in.txt")); //InputStreamReader(System.in));

for (int i = 0; i < values.length; i++) { values[i] = Integer.parseInt(in.readLine());

}

in.close();

}

catch(IOException e) { System.out.println("Some error occurred!");

}

}

}

36

Пример записи в байтовый файл

import java.io.*;

public class ByteWrite {

public static void main(String[] args) { int[] values = {1, 2, 3, 4, 5};

try {

DataOutputStream out = new DataOutputStream(new FileOutputStream("out.bin"));

for (int i = 0; i < values.length; i++) { out.writeInt(values[i]);

}

out.close();

}

catch(IOException e) { System.out.println("Some error occurred!");

}

}

}

out.bin Текстовая форма

☺ ☻ ♥

out.bin Байтовая форма

00 00 00 01

00 00 00 02

00 00 00 03

00 00 00 04

00 00 00 05

37

Пример чтения из байтового файла

import java.io.*;

public class ByteRead {

public static void main(String[] args) { int[] values = new int[5];

try {

DataInputStream in = new DataInputStream(new FileInputStream("out.bin"));

for (int i = 0; i < values.length; i++) { values[i] = in.readInt();

}

in.close();

}

catch(IOException e) { System.out.println("Some error occurred!");

}

}

}

38

Соответствие классов для байтовых и символьных потоков

Байтовый поток

Символьный поток

InputStream

Reader

OutputStream

Writer

ByteArrayInputStream

CharArrayReader

ByteArrayOutputStream

CharArrayWriter

Нет аналога

InputStreamReader

Нет аналога

OutputStreamWriter

FileInputStream

FileReader

FileOutputStream

FileWriter

FilterInputStream

FilterReader

FilterOutputStream

FilterWriter

BufferedInputStream

BufferedReader

BufferedOutputStream

BufferedWriter

39

Соответствие классов для байтовых и символьных потоков

Байтовый поток

Символьный поток

PrintStream

PrintWriter

DataInputStream

Нет аналога

DataOutputStream

Нет аналога

ObjectInputStream

Нет аналога

ObjectOutputStream

Нет аналога

PipedInputStream

PipedReader

PipedOutputStream

PipedWriter

StringBufferInputStream

StringReader

Нет аналога

StringWriter

LineNumberInputStream

LineNumberReader

PushBackInputStream

PushBackReader

SequenceInputStream

Нет аналога

40