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

СТП / lec / java2014-lec-09

.pdf
Скачиваний:
8
Добавлен:
03.03.2016
Размер:
1.95 Mб
Скачать

Конвертация данных в байтовых потоках

Конвертация данных в байтовых потоках

Четыре возможных сочетания порядок байт:

Какой байт

Какой байт

 

 

располагается по

Используется в

адресуется?

младшему адресу?

 

 

 

 

 

 

LSB

LSB

Intel, AMD, Power PC, DEC.

 

 

 

LSB

MSB

Науке неизвестны!

 

 

 

MSB

LSB

Возможно, одна из устаревших архитектур

 

 

 

MSB

MSB

Mac, IBM 390, Power PC

 

 

 

Конвертация данных в байтовых потоках

Решение проблемы:

1) dis – входной поток, DataInputStream

short

s = Short.reverseBytes(dis.readShort());

int

i = lnteger.reverseBytes(dis.readInt());

long

l = Long.reverseBytes(dis.readLong());

float

f =

Float.intBitsToFloat(Integer.reverseBytes(dis.read int());

double

d =

Double.longBitsToDouble(Long.reverseBytes(dis.read Long());

2) Поместить все байты из потока в java.nio.ByteBuffer,

потом вызывать его метод order(ByteOrder), который определяет порядок байтов и читать из буфера.

Классы

BufferedInputStream/BufferedOutputStream

http://www.tutorialspoint.com/java/io/java_io_bufferedinputstream.htm

http://www.tutorialspoint.com/java/io/java_io_bufferedoutputstream.htm

Классы PushbackInputStream

http://www.tutorialspoint.com/java/io/java_io_pushbackinputstream.htm

Класс PrintStream

http://www.tutorialspoint.com/java/io/java_io_printstream.htm

Класс PrintStream

checkError()

Сбрасывает поток на печать и проверяет ошибки

format(Locale I, String format, Object... args)

Отправляет на печать строку, форматированную на основе

аргументов метода с учетом настроек локали.

format(String format, Object... args)

Отправляет на печать форматированную строку

print(T e)

Печатает значение T

println(T e)

Печатает значение T с переводом строки

println()

// Печатает Object с переводом строки

Копирование файлов с ручным буфером

java TestNodeStreams Filel File2

1 inport java.io.*;

2 public class TestNodeStreams {

3public static void main(String[] args) {

4try {

5FileReader input = new FileReader(args[0]);

6try {

7

FileWriter output = new FileWriter(args[l]);

8

try {

9

char[] buffer = new char[128];

10

int charsRead;

11

// первое чтение буфера

12

charsRead = input.read(buffer);

13

while ( charsRead != -1 ) {

14

// записать буфер в файл

15

output.write(buffer, 0, charsRead);

16

// следующие чтение буфера

17

charsRead = input.read(buffer);

18

}

19

} finally {

20

output.close();}

21

} finally {

22

input.close();}

23} catch (IOException e) {

24e. printStackTrace (); }

25}

26}

Копирование файлов с BufferedStream

java TestBufferedStreams filel file2

1import java.io.*;

2public class TestBufferedStreams {

3public static void main(String [] args) {

4try {

5FileReader input = new FileReader(args[0]) ;

6BufferedReader bufInput = new BufferedReader(input);

7

try {

8

FileWriter output = new FileWriter(args[l]);

9

BufferedWriter bufOutput = new BufferedWriter(output);

10

try {

11

String line;

12

// чтение первой строки

13

line = buf Input.readLine();

14

while ( line != null ) {

15

// запись строки в файл

16

bufOutput.write(line, 0, line.length());

17

bufOutput.newLine();

18

// чтение следующей строки

19

line = bufInput.readLine();

20

}

21

} finally {

22

bufOutput.Close(); }

23

} finally {

24

bufInput.Close(); }

25} catch (IOException e) {

26e.printStackTrace(); }

27}

28}

Цепочки потоков ввода-вывода

Соседние файлы в папке lec