/**
* IO解决的问题:解决设备与设备数据传输问题。 比如:硬盘——>内存 内存——>硬盘
*
* 字节流:
* 输入字节流:
* ------|InputStream 所有输入字节流的基类。抽象类。
* ---------|FileInputStream 读入文件的输入字节流
*---------|BufferedInputStream 缓冲输入的字节流。该类内部维护了一个8kb字节数组,
* 该类出现的目的是为了提高读取文件数据的效率。
*
* 输出字节流:OutputStream所有输出字节流的基类。抽象类。
* -----------|FileOutputStream 向文件输入数据的输出字节流。
* -----------|BufferedOutputStream 缓冲输出的字节流,该类出现的目的是为了提高向文件写
* 数据的效率。该类内部维护了一个8kb字节数组。
*
* 什么情况使用字节流:
* 读取到的数据不需要进行编码或解码的情况下使用字节流。比如:图片数据。
*
* 字符流=字节流+编码(解码)
*
*
*
* 字符流:
* 输入字符流:
* -------|Reader 所有输入字符流的基类,抽象类。
* ---------|FileReader 读出文件字符的输入流。
* ---------|BufferedReader 缓冲输入字符流。 该类出现的目的是为了提高读取文件数据的效率。
* 并且拓展 了功能(ReadLine)内部维护了一个8192个长度的字符数组。
*
* 输出字符流:
* -------|Writer 所有输出字符流的基类,抽象类。
* ---------|FileWriter 向文件输出字符的输出字符流。
* ---------|BufferedWriter 缓冲输出字符流。 该类出现的目的是为了提高写入文件数据的效率。
* 并且拓展 了功能(newLine),内部维护了一个8192个长度的字符数组。
* 什么情况使用字符流:
* 读取到的字节数据需要被转换成字符数据,这时候我们就使用字符流。
*
*
*
*
* 转换流:
*
* 输入字节流的转换流: 输入字节流-----输入字符流
* -----InputStreamReader
*
* 输出字节流的转换流:
*
* -----OutputStreamWriter
*
*
* 转换流的作用:
*
* 1.可以把对应的字节流转换成字符流使用。
* 2.可以指定码表进行读写文件的数据。
*
*
*
* FileReader ,FileWriter 这两个类默认是使用的gbk编码表。不能有由你来指定码表读写数据文件。
*/
package com.tgb.io;
importjava.io.BufferedReader;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.InetAddress;
importjava.net.Socket;
public class demo1 {
publicstatic void main(String[] args) throws IOException{
//testInput();
//testOutput();
//writeFile();
//readFile();
}
publicstatic void testOutput() throws IOException{
Socketsocket=new Socket(InetAddress.getLocalHost(),9090);
//获取socket的输出流对象
OutputStream ouputstream=socket.getOutputStream();
//把输出字节流转为成输出字符流。
OutputStreamWriteroutputStreamwriter=new OutputStreamWriter(ouputstream);
outputStreamwriter.write("不饿!");
}
//指定使用UTF-8码表把数据写到文件上。
publicstatic void writeFile() throws IOException {
//建立文件与程序的数据通道
FileOutputStreamfileoutputStram=new FileOutputStream("G:\\a.txt");
//创建一个输出字节流的转换流并且指定码表进行写数据。
OutputStreamWriterouputStreamWriter=new OutputStreamWriter(fileoutputStram,"utf-8");
ouputStreamWriter.write("大家好!");
//关闭资源
ouputStreamWriter.close();
}
publicstatic void readFile() throws IOException{
//建立文件与程序的输入数据通道。
FileInputStreamfileinputStream=new FileInputStream("G:\\a.txt");
//创建输入字节流的转换流并且指定码表进行读取。
InputStreamReaderinputStreamReader=new InputStreamReader(fileinputStream,"utf-8");
intcontent=0;
while((content=inputStreamReader.read())!=-1){
System.out.println((char)content);
}
//关闭资源
inputStreamReader.close();
}
//输入字节流转换为字符流使用。
publicstatic void testInput() throws IOException{
InputStreamin= System.in;
//需要把字节流转换成字符流使用。
InputStreamReaderinputStreamReader=new InputStreamReader(in);
BufferedReaderbufferedReader=new BufferedReader(inputStreamReader);
System.out.println(bufferedReader.readLine());
}
}