Ввод - вывод. Символьные потоки презентация

Содержание

V. Ввод - вывод 3. Символьные потоки

Слайд 2V. Ввод - вывод
3. Символьные потоки


Слайд 3Потоки


Слайд 4
Потоки вывода


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


Слайд 6Класс Writer
public abstract class Writer {

public void write(int

c) throws IOException {
synchronized (lock) {
if (writeBuffer == null){
writeBuffer = new char[writeBufferSize];
}
writeBuffer[0] = (char) c;
write(writeBuffer, 0, 1);
}
}


public void write(char cbuf[]) throws IOException
abstract public void write(char cbuf[], int off, int len) throws IOException;

public void write(String str) throws IOException
public void write(String str, int off, int len) throws IOException

abstract public void flush() throws IOException;
abstract public void close() throws IOException;
}

C

A


Слайд 7public class OutputStreamWriter extends Writer {

private final StreamEncoder se;

public OutputStreamWriter( OutputStream out )
public OutputStreamWriter( OutputStream out , String charsetName )

public void write(int c) throws IOException
public void write(char cbuf[], int off, int len) throws IOException
public void write(String str, int off, int len) throws IOException

public String getEncoding()

public void flush()
public void close()
}

OutputStream out

Класс OutputStreamWriter

C

StreamEncoder se

OutputStream out

String charsetName


Слайд 8Класс FileWriter
public class FileWriter extends OutputStreamWriter {

public FileWriter(File file)

throws IOException {
super(new FileOutputStream(file));
}

public FileWriter(File file, boolean append) throws IOException {
super(new FileOutputStream(file, append));
}
}

C

FileOutputStream(file, append)

FileOutputStream(file)


Слайд 9Запись в файл по одному символу
public class WriteCharDemo {

public

static void main(String[] args) {

FileWriter out = null;

try {
out = new FileWriter("I:\\FileIO\\charfile.txt");
for (int i = 0x0410; i < 0x0450; i++) {
System.out.print((char)i);
out.write(i);
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя


Слайд 10Запись в файл массива символов
public class WriteCharsDemo {

public static

void main(String[] args) {

FileWriter out = null;
char[] chars = new char[64];

for (int i = 0; i < 64; i++) {
chars[i] = (char) (0x0410 + i);
}

System.out.println(Arrays.toString(chars));

try {
out = new FileWriter("I:\\FileIO\\charsfile.txt");
out.write(chars);
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


[А, Б, В, Г, Д, Е, Ж, З, И, Й,..., Щ, Ъ, Ы, Ь, Э, Ю, Я, а, б, в, г, д, е, ж, з, и, й,..., щ, ъ, ы, ь, э, ю, я]


Слайд 11Запись в файл массива символов


Слайд 12Запись строки в файл
public class WriteStringDemo {

public static void

main(String[] args) throws IOException {

String source = "Hello World!";
FileWriter out = null;

System.out.println("String to write: " + source );
System.out.println("Default charset (encoding): " + Charset.defaultCharset());
System.out.println("String bytes using default encoding: " + Arrays.toString(source.getBytes()));

try {
out = new FileWriter("I:\\FileIO\\stringfile.dat");
out.write(source);
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


String to write: Hello World!
Default charset (encoding): windows-1251
String bytes using default encoding: [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]


Слайд 13Запись строки в файл


Слайд 14Запись строки в файл в кодировке UTF-16
public class WriteEncodingDemo {

public static void main(String[] args) throws UnsupportedEncodingException{

String source = "Hello World!";
Writer out = null;

System.out.println("String to write: " + source );
System.out.println("String bytes using UTF-16: " + Arrays.toString(source.getBytes("UTF-16")));

try {

FileOutputStream os = new FileOutputStream("I:\\FileIO\\WriteString.txt");
out = new OutputStreamWriter(os, "UTF-16");

out.write(source);
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


String to write: Hello World!
String bytes using UTF-16:
[-2, -1, 0, 72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 32, 0, 87, 0, 111, 0, 114, 0, 108, 0, 100, 0, 33]


Слайд 15Запись строки в файл в кодировке UTF-16


Слайд 16
Буферизованный вывод


Слайд 17Класс BufferedWriter
public class BufferedWriter extends Writer {

private

Writer out;

private char cb[];
private int nChars, nextChar;
private static int defaultCharBufferSize = 8192;

public BufferedWriter(Writer out)
public BufferedWriter(Writer out, int sz)

public void write(int c)throws IOException
public void write(char cbuf[], int off, int len) throws IOException
public void write(String s, int off, int len) throws IOException

public void flush() throws IOException {
...
out.flush();
...
}

public void close() throws IOException {
...
out.close();
...
}
}

C


Слайд 18Опустошение буфера
public class WriteFlushDemo {

public static void main(String[] args)

throws IOException {

String source = "Hello World!";

BufferedWriter out1 = null;
BufferedWriter out2 = null;

System.out.println("String to write: " + source );

try {
out1 = new BufferedWriter(new FileWriter("I:\\FileIO\\file1.txt"));
out2 = new BufferedWriter(new FileWriter("I:\\FileIO\\file2.txt"));

out1.write(source);
out2.write(source);

} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out1 != null)
out1.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


String to write: Hello World!


Слайд 19Опустошение буфера


Слайд 20Производительность буферизованного вывода

public class WriteBufPerform {

public static void

main(String[] args) throws IOException {

BufferedWriter outbuf = null;
FileWriter out = null;

long time = System.currentTimeMillis();
try {
outbuf = new BufferedWriter(new FileWriter(
"I:\\FileIO\\outbuf.txt"));

for (int i = 0; i < 10000000; i++) {
outbuf.write(65);
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (outbuf != null)
outbuf.close();
} catch (Exception e) {
System.out.println("Error closing file");
}
}
time = System.currentTimeMillis() - time;
System.out.println("Buffered output time: " + time);

...
}
}

Слайд 21Производительность небуферизованного вывода

public class WriteBufPerform {

public static void

main(String[] args) throws IOException {

...

time = System.currentTimeMillis();
try {
out = new FileWriter("I:\\FileIO\\outnobuf.txt");

for (int i = 0; i < 10000000; i++) {
out.write(65);
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
time = System.currentTimeMillis() - time;
System.out.println("Non-buffered output time: " + time);
}
}


Buffered output time: 516
Non-buffered output time: 1469


Слайд 22Почему такой маленький выигрыш?


Слайд 23
Потоки ввода


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


Слайд 25Класс Reader
public abstract class Reader {

public int read() throws

IOException {

char cb[] = new char[1];
if (read(cb, 0, 1) == -1)
return -1;
else
return cb[0];
}

public int read(char cbuf[]) throws IOException {
return read(cbuf, 0, cbuf.length);
}

public abstract int read(char[] cbuf, int off, int len) throws IOException;

public abstract void close() throws IOException;
}

C

A


Слайд 26public class InputStreamReader extends Reader {

private final StreamDecoder sd;

InputStreamReader( InputStream in)
InputStreamReader( InputStream in , String charsetName )

public int read() throws IOException
public int read(char[] cbuf, int off, int len) throws IOException

String getEncoding()
void close()
}

Класс InputStreamReader

C

InputStream in

StreamDecoder sd

InputStream in

String charsetName


Слайд 27Класс FileReader
public class FileReader extends InputStreamReader {

public FileReader(String fileName)

throws FileNotFoundException {
super(new FileInputStream(fileName));
}

}

C


Слайд 28Чтение из файла по одному символу
public class ReadCharDemo {

public

static void main(String[] args) throws IOException {

FileReader in = null;
int temp;

try {
in = new FileReader("I:\\FileIO\\charfile.txt");
for (int i = 0; i < 64; i++) {
temp = in.read();
if (temp == -1)
break;

System.out.print((char)temp);
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя


Слайд 29Чтение из файла массива символов
public class ReadCharsDemo {

public static

void main(String[] args) throws IOException {

FileReader in = null;

try {
in = new FileReader("I:\\FileIO\\charfile.txt");
char[] chars = new char[64];
int nread = in.read(chars);
if (nread > 0) {
System.out.println("Read " + nread + " characters");
System.out.println(Arrays.toString(chars));
}

} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
}
}


Read 64 characters
[А, Б, В, Г, Д, Е, Ж, З, И, Й,..., Щ, Ъ, Ы, Ь, Э, Ю, Я, а, б, в, г, д, е, ж, з, и, й,..., щ, ъ, ы, ь, э, ю, я]


Слайд 30Чтение символов из файла в кодировке UTF-16
public class ReadEncodingDemo {

public static void main(String[] args) throws Exception {

FileInputStream is = new FileInputStream("I:\\FileIO\\writeutf16.txt");
Reader in = new InputStreamReader(is, "UTF-16");

int data = in.read();
while (data != -1) {
char dataChar = (char) data;
data = in.read();
System.out.print(dataChar);
}
in.close();
}
}


Hello World!


Слайд 31
Буферизованный ввод


Слайд 32Класс BufferedReader
public class BufferedReader extends Reader {

private

Reader in;
private char cb[];
private int nChars, nextChar;
private static int defaultCharBufferSize = 8192;

public BufferedReader(Reader in, int sz) {
super(in);
if (sz <= 0)
throw new IllegalArgumentException("Buffer size <= 0");
this.in = in;
cb = new char[sz];
nextChar = nChars = 0;
}

public BufferedReader(Reader in) {
this(in, defaultCharBufferSize);
}

int read()
int read(char[] cbuf, int off, int len)
String readLine()

public void close() throws IOException {
...
out.close();
...
}
}

C


Слайд 33Производительность буферизованного ввода
public class ReadBufPerform {

public static void

main(String[] args) throws IOException {

BufferedReader inbuf = null;
FileReader in = null;

int temp;

long time = System.currentTimeMillis();
try {
inbuf = new BufferedReader(new FileReader("I:\\FileIO\\outbuf.txt"));

for (int i = 0; i < 10000000; i++) {
temp = inbuf.read();
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (inbuf != null)
inbuf.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
...
}
}

Слайд 34Производительность небуферизованного ввода

public class ReadBufPerform {

public static void

main(String[] args) throws IOException {

...
time = System.currentTimeMillis();
try {
in = new FileReader("I:\\FileIO\\outnobuf.txt");

for (int i = 0; i < 10000000; i++) {
temp = in.read();
}
} catch (IOException e) {
System.out.println("An I/O error occured");
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
System.out.println("Error closing file");
}
}
time = System.currentTimeMillis() - time;
System.out.println("Non-buffered input time: " + time);
}
}


Buffered input time: 437
Non-buffered input time: 891


Слайд 35Почему такой маленький выигрыш?


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика