JAVA.IO

  

/**

 * 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());

 

 

}

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值