最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何使用字符流讀寫非文本文件

 更新時間:2023年04月14日 09:32:28   作者:CrazyDragon_King  
這篇文章主要介紹了Java如何使用字符流讀寫非文本文件,以Java的字符流讀取文件為例:它只能讀取0-65535之間的字符,可以看出來字符都是正數(shù),但是二進制的byte是可以為負數(shù)的,需要的朋友可以參考下

使用字符流讀取文件(非文本)

上篇 淺談一下Java為什么不能使用字符流讀取非文本的二進制文件 分析了為什么無法使用字符流讀取文件的原因,是因為編碼方式的問題(二進制數(shù)據(jù)是無編碼的)。以Java的字符流讀取文件為例:它只能讀取0-65535之間的字符,可以看出來字符都是正數(shù),但是二進制的byte是可以為負數(shù)的。但是讀取的時候會被當做正數(shù)來讀取,或者是無法在編碼表中找到的字符會返回一個奇怪的符號(你可能見過那個奇怪的 “?”)。

但是在某些情況下,必須要使用字符來顯示二進制數(shù)據(jù),也不是沒有辦法的,下面就來介紹一個我們什么的方式–base64編碼。

Base64編碼

base64編碼簡介

base64是網(wǎng)絡(luò)上常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數(shù)據(jù)的方法。Base64編碼是從二進制到字符的過程,可以用在HTTP環(huán)境下傳遞較長的標識信息。采用Base64編碼后具有不可讀性,需要解碼后才能閱讀。它的中文名是基于64個可打印字符來表示二進制數(shù)據(jù)。

編碼規(guī)則

1. 把3個字節(jié)變成4個字節(jié).

2. 沒76個字符加一個換行符。

3. 最后的結(jié)束符也要處理。

編碼方式的缺點

從編碼規(guī)則可以看出來,base64要求把每三個8Bit的字節(jié)轉(zhuǎn)換成四個6Bit的字符(38 = 46 = 24),然后把6Bit再添加兩位高位0,組成四個8Bit的字節(jié)。也就是說,轉(zhuǎn)換后的字符串理論上將要比原來的長1/3(33%)。

這里這是介紹一個概念,關(guān)于更加詳細的內(nèi)容,如果感興趣的話,可以取收集了解更多。

Base64在 Java 里的應(yīng)用

Java的Base64工具類提供了一套靜態(tài)方法獲取下面三種BASE64編解碼器:

  • 基本:輸出被映射到一組字符A-Za-z0-9+/,編碼不添加任何行標,輸出的解碼僅支持A-Za-z0-9+/。
  • URL:輸出映射到一組字符A-Za-z0-9+_,輸出是URL和文件。
  • MIME:輸出隱射到MIME友好格式。輸出每行不超過76字符,并且使用’\r’并跟隨’\n’作為分割。編碼輸出最后沒有行分割。

分別對應(yīng)如下幾個方法:

Encoder basicEncoder = Base64.getEncoder();
Encoder mimeEncoder = Base64.getMimeEncoder();
Encoder urlEncoder = Base64.getUrlEncoder();

我寫了一個簡單的工具類來進行測試 基本(basic) 的編碼器。。

package com.dragon;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;

/**
 * @author Alfred
 * */
public class Base64Util {
	private static Encoder encoder = Base64.getEncoder();
	private static Decoder decoder = Base64.getDecoder();
	private static String ENCODE = "UTF-8";
	private static int LENGTH = 1024;
	
	/**
	 * 靜態(tài)方法:
	 * 將文件等二進制數(shù)據(jù)(文本和非文本都可以)
	 * 轉(zhuǎn)為base64字符串。
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 * 
	 * */
	public static String dataToBase64(File src) throws FileNotFoundException, IOException {
		Encoder encoder = Base64.getEncoder();
		
		int len = (int)src.length();
		byte[] bar = new byte[(int)len];
		int hasRead = 0;
		byte[] b = new byte[LENGTH];
		//使用專門處理 byte 的IO流比較方便,一次性讀取較大文件對內(nèi)存壓力較大
		try (InputStream in = new BufferedInputStream(new FileInputStream(src));
				ByteArrayOutputStream bos = new ByteArrayOutputStream(len)) {
			while ((hasRead = in.read(b)) != -1) {
				bos.write(b, 0, hasRead);
			}
			bar = bos.toByteArray();
		}
		return encoder.encodeToString(bar);
	}
	
	public static String dataToBase64(String src) throws UnsupportedEncodingException {
		return encoder.encodeToString(src.getBytes(ENCODE));
	}
	
	public static byte[] base64ToData(String src) {
		return decoder.decode(src);
	}
}

將圖片轉(zhuǎn)為Base64字符串進行讀寫

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Base64Test {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		testPic();
	}
	
	static void testPic() throws FileNotFoundException, IOException {
		// 測試圖片文件。
		Path picPath = Paths.get("./src/com/dragon/001.jpg");
		File picFile = picPath.toFile();
		String picToBase64 = Base64Util.dataToBase64(picFile);
		System.out.println(picToBase64);
		long oldSize = picFile.length();
		long newSize = picToBase64.getBytes("UTF-8").length;
		System.out.println("圖片原始大?。ㄗ止?jié)):" + oldSize);
		System.out.println("轉(zhuǎn)換后數(shù)據(jù)大?。ㄗ止?jié)):" + newSize);
		System.out.println("轉(zhuǎn)換后比原來擴大的比例為:" + (double)(newSize-oldSize)/(double)oldSize + " %");
		
		//將數(shù)據(jù)寫入文件
		try (Writer writer = new BufferedWriter(new FileWriter("./src/com/dragon/002.txt"))) {
			writer.write(picToBase64);
		}
		
		//從文件中讀取數(shù)據(jù)
		String line = null;
		try (BufferedReader reader = new BufferedReader(new FileReader("./src/com/dragon/002.txt"))){
			line = reader.readLine();
		}
		System.out.println(picToBase64.equals(line));
	}
}

運行截圖

在這里插入圖片描述

說明:這里將圖片轉(zhuǎn)為base64字符串后,使用字符流寫入了一個文本文件,然后再使用字符流讀取出來,再和原來的字符串進行比較結(jié)果為 true。 所以,就完成了對圖片數(shù)據(jù)的讀取,可能你這里說你讀取的并不是圖片的二進制數(shù)據(jù),但是其實所有的文件都是以二進制來存儲的!而且,這個base64字符串,也是可以直接作為圖片來使用的。

注意:我這里已經(jīng)選取了一個非常小的圖片,可以看到原始大小才 3639字節(jié),也就是不到 4 KB,但是如果轉(zhuǎn)換成文字那就是不少了(所以,它會顯得很長,非常長。)。

測試圖片

在這里插入圖片描述

然后你可能會問怎么證明這個字符串就是上面這張圖片呢?這個也很好辦到,如果你對前端的知識有所了解的話,應(yīng)該知道前端的圖片是可以使用base64字符串來表示的,下面寫一個 html 文件測試一下。

image.html

<!DOCTYPE>
<html>
    <head>
        <meta charset="UTF-8"/>
        <title>base測試</title>
    </head>
    <body>
        <img src="data:image/jpeg;base64,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"/>
    </body>
<html>

打開瀏覽器測試一下

在這里插入圖片描述

說明: 它的具體用法如下:

<img src="https://img-blog.csdnimg.cn/2022010703315790409.jpeg">

圖片的大小相對于字符來說,其實是很龐大了。我這里的html代碼是完整的圖片的base64編碼字符串,然后我的博客的字數(shù)就變大了很多。

字符串轉(zhuǎn)base64編碼

public class Base64Test {
	public static void main(String[] args) throws FileNotFoundException, IOException {
		testStr("I love you yesterday and today!");
	}
	
	static void testStr(String src) throws UnsupportedEncodingException {
		//測試文本數(shù)據(jù)。
		String strToBase64 = Base64Util.dataToBase64(src);
		System.out.println("base64編碼:" + strToBase64);
		String base64ToStr = new String(Base64Util.base64ToData(strToBase64));
		System.out.println("base64解碼:" + base64ToStr);
	}
}

測試截圖

在這里插入圖片描述

base64的用處

Base64常用于在通常處理文本數(shù)據(jù)的場合,表示、傳輸、存儲一些二進制數(shù)據(jù)。包括MIME的email,email via MIME, 在XML中存儲復(fù)雜數(shù)據(jù)。 注1:互聯(lián)網(wǎng)上也有很多可以進行編解碼的網(wǎng)站,如果需要使用的話,可以取嘗試一下。

注2:可以觀察一下這個base64字符串的特點,我上次學(xué)習Java爬蟲的時候,爬了一個網(wǎng)站,發(fā)現(xiàn)這個網(wǎng)站的一個 script 腳本中,含有一個json對象,其中有一個屬性是 url,但是對應(yīng)的鏈接卻看不懂(base64字符串是不可讀的),但是我感覺它就是base64字符串,所以我利用base64編解碼網(wǎng)站解碼一看,真的是一個網(wǎng)站的地址。然后,就可以寫一個解碼方法,當爬到這個數(shù)據(jù)時,給它解碼了,哈哈。

舉一個簡單的例子:

{"url":"aHR0cHMlM0ElMkYlMkZ3d3cuYmFpZHUuY29tJTJG"}
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;

public class TestALittle {
	public static void main(String[] args) throws UnsupportedEncodingException {
		String base64Str = "aHR0cHMlM0ElMkYlMkZ3d3cuYmFpZHUuY29tJTJG";
		String de_str = base64ToUrlEncoderToURL(base64Str);
		System.out.println("解碼:" + de_str);
	}
	
	//base64解密為urlencoder,再解碼為url
	public static String base64ToUrlEncoderToURL(String base64Str) throws UnsupportedEncodingException {
		Decoder decoder = Base64.getDecoder();
		byte[] bt = decoder.decode(base64Str);
		String en_str = new String(bt, 0, bt.length);
		return URLDecoder.decode(en_str, "UTF-8");
	}
}

在這里插入圖片描述

說明: 這個例子中的 url 進行了兩次編碼,第一次是將url中的非西歐字符編碼(可以去了解一下為什么這么做?),然后再使用base64編碼。但是,如果你掌握了解碼技術(shù),解碼也是很簡單的。(但是如果你看不出來它是base64編碼,那估計就沒有辦法了?。?/p>

總結(jié)

其實這也很容易理解,你可以想一下,文本文件本質(zhì)上也是二進制文件(因為所有的文件都是二進制存儲的),你能看到文字并不是因為文件里面記錄了文字,而是記錄了文字的編碼,打開后會進行解碼。(隨便打開一個非文本文件(記事本),你就能看到了,都是亂碼。)所以如果有一種編碼方式可以對二進制數(shù)據(jù)進行處理,并且能表示所有的二進制數(shù)據(jù),那么二進制數(shù)據(jù)也可以以特殊字符的方式顯示。好了,這里簡單的介紹了一下,如何使用字符流來讀取文件,那就是通過base64對文件進行編碼,然后再使用字符流進行處理。

到此這篇關(guān)于Java如何使用字符流讀寫非文本文件的文章就介紹到這了,更多相關(guān)Java字符流讀寫非文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?將PDF轉(zhuǎn)為HTML時保存到流的方法和步驟

    Java?將PDF轉(zhuǎn)為HTML時保存到流的方法和步驟

    本文介紹如何通過Java后端程序代碼將PDF文件轉(zhuǎn)為HTML,并將轉(zhuǎn)換后的HTML文件保存到流,下面是實現(xiàn)轉(zhuǎn)換的方法和步驟,感興趣的朋友一起看看吧
    2022-01-01
  • Java基礎(chǔ)之多線程的三種實現(xiàn)方式

    Java基礎(chǔ)之多線程的三種實現(xiàn)方式

    這篇文章主要介紹了Java基礎(chǔ)之多線程的三種實現(xiàn)方式,文中有非常詳細的代碼示例,對正在學(xué)習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Mybatis-plus如何更新Null字段詳解

    Mybatis-plus如何更新Null字段詳解

    MyBatis-plus在進行更新操作時不會更新傳入實體中為null或默認值屬性字段,只更新不為null的值、非默認值的屬性字段,這篇文章主要給大家介紹了關(guān)于Mybatis-plus如何更新Null字段的相關(guān)資料,需要的朋友可以參考下
    2023-07-07
  • java啟動線程的3種方式對比分析

    java啟動線程的3種方式對比分析

    這篇文章主要為大家對比分析了java啟動線程的3種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SpringMVC將請求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式

    SpringMVC將請求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式

    這篇文章主要給大家介紹餓了SpringMVC將請求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式,文中通過代碼示例和圖文結(jié)合給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-11-11
  • 淺析java中密文的創(chuàng)建和校驗

    淺析java中密文的創(chuàng)建和校驗

    這篇文章主要為大家詳細介紹了java中密文的創(chuàng)建和校驗的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2024-04-04
  • Java?Selenide?簡介與用法

    Java?Selenide?簡介與用法

    Selenium?是目前用的最廣泛的Web?UI?自動化測試框架,本文給大家介紹下Java?Selenide使用,感興趣的朋友一起看看吧
    2022-01-01
  • Java中ArrayBlockingQueue和LinkedBlockingQueue

    Java中ArrayBlockingQueue和LinkedBlockingQueue

    這篇文章主要介紹了Java中ArrayBlockingQueue和LinkedBlockingQueue,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 詳解Eclipse Validating緩慢的優(yōu)化

    詳解Eclipse Validating緩慢的優(yōu)化

    這篇文章主要介紹了詳解Eclipse Validating緩慢的優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-03-03
  • Java編程中二維數(shù)組的初始化和基本操作實例

    Java編程中二維數(shù)組的初始化和基本操作實例

    這篇文章主要介紹了Java編程中二維數(shù)組的初始化和基本操作實例,是Java入門學(xué)習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10

最新評論

中宁县| 武城县| 民和| 兴海县| 德安县| 郯城县| 长沙市| 东安县| 英德市| 万载县| 循化| 化隆| 巴南区| 乌拉特中旗| 白银市| 大埔区| 蒲城县| 台州市| 长武县| 平阴县| 灵台县| 冀州市| 纳雍县| 清苑县| 曲沃县| 集贤县| 玉山县| 略阳县| 巴楚县| 乌兰浩特市| 镇远县| 曲麻莱县| 婺源县| 灵寿县| 那坡县| 西青区| 无为县| 南溪县| 苏尼特右旗| 丹巴县| 莱州市|