Конвертация данных в байтовых потоках
Конвертация данных в байтовых потоках
Четыре возможных сочетания порядок байт:
Какой байт |
Какой байт |
|
|
|
|||
располагается по |
Используется в |
||
адресуется? |
|||
младшему адресу? |
|
||
|
|
||
|
|
|
|
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}
Цепочки потоков ввода-вывода