天天看点

Java IO

IO解决问题

解决设备与设备之间 的数据传输问题。  比如:硬盘--->内存            内存----->硬盘

字节流:

输入字节流

InputStream 所有输入字节流的基类。抽象类。

FileInputStream 读取文件的输入字节流。

BufferedInputStream 缓冲输入字节流。该类内部其实就是维护了一个8kb字节数组而已。  该类出现的目的是为了提高读取文件数据的效率。

输出字节流

OutputStream  所有输出字节流的基类。  抽象类。

FileOutputStream 向文件输出数据 的输出字节流。

BufferedOutputStream  缓冲输出字节流。该类出现的目的是为了提高向文件写数据的效率。该类内部其实也是维护了一个8kb的字节数组而已。

什么情况使用字节流:读取到数据不需要经过编码或者解码的情况情况下这时候使用字节流。比如:图片数据

字符流 = 字节流 + 编码(解码)

字符流:

输入字符流

Reader 所有输入字符流的基类。抽象类。

FileReader 读取文件字符的输入字符流。 

BufferedReader 缓冲输入字符流。该类出现的目的是为了提高读取文件字符的效率并且拓展了功能(readLine()),它内部 其实就是维护了一个8192个长度的字符数组。

输出字符流

Writer 所有输出字符流的基类。抽象类。

FileWriter 向文件输出字符数据的输出字符流。

BufferedWriter 缓冲输出字符流。该类出现的目的是为了提高写文件字符的效率并且拓展了功能(newLine())。

什么情况下使用字符流:如果读写的都是字符数据,这时候我们就使用字符流。

转换流

输入字节流的转换流             输入字节流---------输入字符流

InputSrteamReader 

输出字节流的转换流

OutputStreamWriter

转换流的作用:

1. 可以把对应的字节流转换成字符流使用。

2. 可以指定码表进行读写文件的数据。

package cn.itcast.io;                  import java.io.BufferedReader;              import java.io.FileInputStream;              import java.io.FileOutputStream;              import java.io.IOException;              import java.io.InputStream;              import java.io.InputStreamReader;              import java.io.OutputStream;              import java.io.OutputStreamWriter;              import java.net.InetAddress;              import java.net.Socket;                  public class Io {               public static void main(String[] args) throws Exception{              //    readFile();                 writeFile();                 testInput();                   }               public static  void readFile() throws IOException{                 FileInputStream fileInputStream = new FileInputStream("G:\\eclipse-workspace\\test\\liuchao");                 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"utf-8");                 int content = 0;                 StringBuilder stringBuilder = new StringBuilder();                 while ((content =inputStreamReader.read())!=-1) {              //      System.out.println((char)content+"");                   stringBuilder.append((char)content);                     }                 System.out.print(stringBuilder);                 inputStreamReader.close();               }                  //    FileReader fileReader = new FileReader("G:\\eclipse-workspace\\test\\liuchao");              //    int con=0;              //    while((con=fileReader.read()!=-1)) {              //      System.out.print((char)con);              //    }              //    FileReader.close();                    public static void writeFile() throws Exception {                  FileOutputStream fileOutputStream = new FileOutputStream("G:\\eclipse-workspace\\test\\liuchao");                  OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"gbk");                  outputStreamWriter.write("刘超");                 outputStreamWriter.close();               }                    public static void TestOutPut() throws Exception {                  Socket socket = new Socket(InetAddress.getLocalHost(),9090);                  OutputStream outputStream = socket.getOutputStream();                  OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);                  outputStreamWriter.write("爱你");                  socket.close();               }                public static void testInput() throws Exception {                  InputStream  in = System.in;                  InputStreamReader inputStreamReader = new InputStreamReader(in);                  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);                  System.out.println(bufferedReader.readLine());                   }              }