国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java常用字節流和字符流實例匯總

Java常用字節流和字符流實例匯總

2020-07-26 12:17MrDong先生 Java教程

這篇文章主要介紹了Java常用字節流和字符流實例匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

IO流(輸入流、輸出流)

字節流字符流

  1.字節流:

  • InputStream、OutputStream
  • InputStream抽象了應用程序讀取數據的方式;
  • OutputStream抽象了應用程序寫出數據的方式;

  2.EOF=End 讀到-1就讀到結尾

  3.輸入流的基本方法:

  • int b=in.read();讀取一個字節無符號填充到int低八位;-1是EOF;
  • in.read(byte[] buf)
  • in.read(byte[] buf,int start,int size)

  4.輸出流基本方法: 

  • out.write(int b) 寫出一個byte到流,b的低8位;
  • out.write(byte[] buf) 將buf字節數組都寫入到流;
  • out.write(byte[] buf,int start,int size)       

  5.FileInputStream--->具體實現了在文件上讀取數據,下面請看最簡單的文件讀取:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.wxd.test2;
 
import java.io.FileInputStream;
import java.io.IOException;
 
public class IOUtil {
  /**
   * 讀取指定文件內容,按照16進制輸出到控制臺
   * 并且每輸出10個byte換行
   * @param fileName
   */
  public static void printHex(String fileName) throws IOException {
    //把文件作為字節流進行讀操作
    FileInputStream in =new FileInputStream(fileName);
    int b;
    int i=1;
    while ((b=in.read())!=-1){
      if(b<=0xf){
        //單位數前面補0
        System.out.print(0);
      }
      System.out.print(Integer.toHexString(b)+" ");
      if(i++%10==0){
        System.out.println();
      }
    }
    in.close();
  }
}

  6.FileOutputStream實現了向文件中寫出byte數據的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.wxd.test2;
 
import java.io.FileOutputStream;
import java.io.IOException;
 
public class FileOutDemo1 {
  public static void main(String[] args) throws IOException{
    //如果該文件不存在則直接創建,如果存在刪除后創建
    FileOutputStream out=new FileOutputStream("demo/out.dat");
    out.write('A');//寫出了‘A'字符的低八位
    out.write('B');//寫出了‘B'字符的低八位
    int a=10;//write只能寫低八位寫一個int需要寫四次每次8位
    out.write(a>>>24);
    out.write(a>>>16);
    out.write(a>>>8);
    out.write(a);
    byte[] zg="中國".getBytes("UTF-8");
    out.write(zg);
    out.close();
 
    IOUtil.printHex("demo/out.dat");
 
  }
}

  7.DataOutputStream/DataInputStream對“流”功能的擴展,可以更加方便的讀取int,long,字符等類型數據:

writeInt()/writeDouble()/writeUTF()  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.wxd.test2;
 
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class DosDemo {
  public static void main(String[] args) throws IOException {
    String file="demo/dos.dat";
    DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));
    dos.writeInt(10);
    dos.writeInt(-10);
    dos.writeLong(10l);
    dos.writeDouble(10.5);
    //采用UTF-8編碼寫出
    dos.writeUTF("中國");
    //采用utf-16be編碼寫出
    dos.writeChars("中國");
    dos.close();
  }
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.wxd.test2;
 
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
 
public class DisDemo {
  public static void main(String[] args) throws IOException {
    String file="demo/dos.dat";
    DataInputStream dis=new DataInputStream(new FileInputStream(file));
    int i=dis.readInt();//其實做了4次read,因為int是32位
    System.out.println(i);
     i=dis.readInt();
    System.out.println(i);
    long l=dis.readLong();//其實做了8次read,應為long是64位
    System.out.println(l);
    double d=dis.readDouble();
    System.out.println(d);
    String s=dis.readUTF();
    System.out.println(s);
    dis.close();
  }
}

 

  8.BufferedInputStream&BufferedOutputStrean這兩個流為IO提供了帶緩沖區的操作,一般打開文件進行寫入或讀取操作時,都會加上緩沖,這種流模式提高了IO性能

從應用程序中把數據放入文件,相當于將一缸水倒入到另一個缸中:

  • FileOutputStream--->write()方法相當于一滴一滴地把水轉移過去
  • DataOutputStream--->writeXxx()方法會方便一些,相當于一瓢一瓢的把水轉移過去
  • BufferedOutputStream--->write()方法相當于一瓢一瓢先放入桶中,再從桶中倒入缸中
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/***
   *進行文件的拷貝,利用帶緩沖的字節流
   * @param srcFile
   * @param destFile
   * @throws IOException
   */
  public static void copyFileByBuffer(File srcFile,File destFile) throws IOException{
    if(!srcFile.exists()){
      throw new IllegalArgumentException("文件:"+srcFile+"不存在");
    }
    if(!srcFile.isFile()){
      throw new IllegalArgumentException(srcFile+"不是文件!");
    }
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));
    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destFile));
    int c;
    while ((c=bis.read())!=-1){
      bos.write(c);
      bos.flush();//刷新緩沖區,否則寫入不到;
    }
    bis.close();
    bos.close();
  }

字符流

1.編碼問題

2.認識文本和文本文件

3.Java的文本(char)是16位無符號的整數,是字符的unicode編碼(雙字節編碼)文件是byte byte byte...的數據序列

  文本文件是文本(char)序列按照某種編碼方案(utf-8,utf-16be,gbk)序列化為byte的存儲

4.字符流(Reader Writer):--->操作的是文本文件

  字符的處理,一次處理一個字符

  字符的底層任然是基本的字節序列

  字符流的基本實現

    InputStreamReader 完成byte流解析為char流,按照編碼解析

    OutputStreamWriter 提供char流到byte流,按照編碼處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.wxd.test2;
 
import java.io.*;
 
public class IsrAndOswDemo {
  public static void main(String[] args) throws IOException{
    //InputStreamReader被稱為橋梁流
    FileInputStream in=new FileInputStream("demo\\test.txt");//默認項目的編碼,操作的時候要寫文件本身的編碼
    InputStreamReader isr=new InputStreamReader(in,"utf-8");
    FileOutputStream out=new FileOutputStream("demo\\test2.txt");
    OutputStreamWriter osw=new OutputStreamWriter(out,"utf-8");
//    int c;
//    while ((c=isr.read())!=-1){
//      System.out.print((char)c);
//    }
    char[] buffer=new char[8*1024];
    int c;
    //批量讀取,放入buffer這個字符數組,從第0個位置開始放置,最多放buffe.length個
    //返回的是讀到的字符的個數
    while ((c=isr.read(buffer,0,buffer.length))!=-1){
      String s=new String(buffer,0,c);
      System.out.println(s);
      osw.write(buffer,0,c);
      osw.flush();
    }
    isr.close();
    osw.close();
  }
}

5.FileReader/FileWriter(這種方式bu)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.wxd.test2;
 
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
public class FrAndFwDemo {
  public static void main(String[] args) throws IOException{
    FileReader fr=new FileReader("demo\\test.txt");
    FileWriter fw=new FileWriter("demo\\text2.txt",true);//設置為true在后面追加
    char[] buffer=new char[2056];
    int c;
    while ((c=fr.read(buffer,0,buffer.length))!=-1){
      fw.write(buffer,0,c);
      fw.flush();
    }
    fr.close();
    fw.close();
  }
}

6.字符流的過濾器

  BufferedReader ----->readLine一次讀一行

  BufferedWriter/PrintWriter ---->寫一行

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.wxd.test2;
 
import java.io.*;
 
public class BrAndBwOrPwDemo {
  public static void main(String[] args) throws IOException {
    //對文件進行讀寫操作
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("demo\\test.txt")));
    /*BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo\\test3.txt")));*/
    PrintWriter pw = new PrintWriter("demo\\test3.txt");
    String line;
    while ((line = br.readLine()) != null) {
      System.out.println(line);//一次讀一行,并不能識別換行
      /*bw.write(line);
      //單獨寫出換行操作
      bw.newLine();
      bw.flush();*/
      pw.println(line);
      pw.flush();
    }
    br.close();
//    bw.close();
    pw.close();
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/MrXiaoAndDong/p/IO.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧洲视频一区 | www,四虎 | 亚洲免费在线播放 | 日韩视频在线观看 | 久色| 亚洲在线一区二区 | 成人午夜精品一区二区三区 | 精品一区免费 | 欧美九九九 | 色天天综合久久久久综合片 | 激情片网站 | 黄片毛片 | 国产毛片久久久 | 欧洲精品在线观看 | 免费观看污视频 | 最新国产一区 | 在线二区 | 日韩av一区二区在线观看 | 欧美一级一区 | 国产伦精品一区二区三区四区视频 | 天天综合久久 | 欧美精品一二三 | 少妇一级淫免费放 | 热久久久久| 91精品国产乱码久 | 久久综合久久综合久久 | 国产三级在线 | 日韩手机在线观看 | 亚洲视频在线观看 | 国产尤物av | 久久精品中文字幕 | 国产精品一二三在线观看 | 91精品国产综合久久福利软件 | 欧美精品一二三区 | 亚洲精品福利在线 | 中文字幕视频在线 | 羞羞视频免费看 | 成人综合久久 | 欧美精品在线一区二区三区 | 精品蜜桃一区二区三区 | 偷拍第一页 |