`

字符文件和字节文件可一段程序完成

    博客分类:
  • java
阅读更多
可以将文件转化为Base64格式字符串,在将字符串解码输出。
调用方法:
package test;

import java.io.FileNotFoundException;
import java.io.IOException;

import junit.framework.TestCase;

public class TestBase64Convert extends TestCase {
    Base64Convert baseCov = null;
    public TestBase64Convert(String s) {
        super(s);
    }
    protected void setUp() throws Exception {
        baseCov = new Base64Convert();
    }
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public void testIoToBase64() {
        try {
           String strBase64 = baseCov.ioToBase64(); //将 io 转换为 base64编码
            System.out.println(">>> "+strBase64);
             baseCov.base64ToIo(strBase64); //将 base64编码转换为 io 文件流,生成一幅新图片
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


转换方法:
package test;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import sun.misc.BASE64Decoder;
import com.cops.modules.util.Base64Utils;

@SuppressWarnings("restriction")
public class Base64Convert {
BASE64Decoder decoder = new BASE64Decoder();   
@SuppressWarnings("static-access")
public String ioToBase64() throws IOException {
        String fileName = "C:\\Users\\Lenovo\\Desktop\\qq.png"; //源文件
        String strBase64 = null;
        try {
        FileInputStream in = new FileInputStream(fileName);
            // in.available()返回文件的字节长度
//        System.out.println(in.getChannel().size() +"--" + in.available());
            byte[] bytes = new byte[in.available()];
            // 将文件中的内容读入到数组中
            in.read(bytes);
           
            strBase64 = new BASE64Encoder().encode(bytes);      //将字节流数组转换为字符串
            in.close();
            System.out.println(strBase64);
        } catch (FileNotFoundException fe) {
            fe.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return strBase64;
    }


public void base64ToIo(String strBase64) throws IOException {
        String string = strBase64;
        String fileName = "C:/Users/Lenovo/Desktop/gril222.jpg"; //生成的新文件
        ByteBuffer value;
        try {
            // 解码,然后将字节转换为文件
            byte[] bytes = new BASE64Decoder().decodeBuffer(string);   //将字符串转换为byte数组
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
            byte[] buffer = new byte[in.available()];
            FileOutputStream out = new FileOutputStream(fileName);
            int bytesum = 0;
            int byteread = 0;
            while ((byteread = in.read(buffer)) != -1) {
                bytesum += byteread;
                out.write(buffer, 0, byteread); //文件写操作
            }
        //解码的另一种写法
        value = Base64Utils.getFromBASE64byte(strBase64);
FileOutputStream fos = new FileOutputStream(fileName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
FileChannel fc = fos.getChannel();
fc.write(value);
fos.flush();
fc.close();
fos.close();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}
分享到:
评论

相关推荐

    Java字符流和字节流

    ### Java字符流和字节流详解 #### 一、引言 在Java中,I/O流主要用于处理输入输出操作,包括文件读写等。根据处理数据类型的不同,Java I/O流主要分为字节流和字符流两大类。字节流处理的是8位的字节数据,而字符流...

    文件转字节流(C#).rar

    这段代码打开指定路径的文件,创建一个FileStream对象,然后读取文件的所有内容到字节数组中。 2. 使用MemoryStream: 如果先将文件内容读入内存,可以使用MemoryStream。但这种方式对于大文件可能会导致内存问题。...

    统计字符串字节数统计字符串字节数

    这段代码首先将字符串`s`按照指定的编码(这里是UTF-8和GBK)转换成字节序列,然后使用`len()`函数计算字节长度。 在JavaScript中,可以使用`Buffer`对象来计算: ```javascript let s = "你好,世界!Hello, ...

    qt实现转换文件字符集编码

    这段代码首先创建了GBK和UTF-8的解码器和编码器,然后读取GBK编码的文件内容,通过GBK解码器将其转换为字符串,接着使用UTF-8编码器将字符串编码为新的字节串,最后写入目标文件。 在实际项目中,你可能需要处理...

    基础汇编程序(4)查找字符串中的指定字符

    根据给定的文件信息,本篇文章将详细解析一个基础汇编程序的设计思路及其实现方法。该程序的主要功能是在一个指定的存储区域内查找用户通过键盘输入的特定字符,并在遇到空格字符时结束搜索,最后根据查找结果输出...

    将文件大小变成相应的字符串

    本文主要介绍了一段用于将文件大小转换为易于理解的字符串格式(如“1.41KB”或“1.32MB”)的Visual Basic (VB) 源代码。此功能在多种场景下都非常实用,例如在开发文件管理器、网络传输进度显示等应用程序时。 ##...

    hex文件解析,校验码校验

    Hex文件的内容通常是每两个字符代表一个字节,每个字节用十六进制表示。例如,“48 65 6C 6C 6F”代表字符串“Hello”。 2. **转换二进制**:读取到的十六进制字符串需要转换成对应的二进制形式。每个十六进制数字...

    编写程序mycp.c,实现从命令行读入文件的复制功能,用原始文件系统调用。

    该程序`mycp.c`的主要功能是从命令行读取两个参数:源文件路径和目标文件路径,并将源文件的内容复制到目标文件中。程序主要依赖于C语言标准库函数以及Linux系统调用函数来完成文件操作。 ### 2. 头文件与宏定义 #...

    基于Linux字符设备驱动程序的设计与实现

    在设计和实现字符设备驱动程序时,开发者需要完成的主要任务之一就是实现struct file_operations结构体中的各个函数。例如,read()函数用于从设备读取数据,write()函数用于向设备写入数据,ioctl()函数用于执行特定...

    易语言字节集转换16进制文本源码

    1. **字节集创建**:首先,你需要创建一个字节集对象,这可以通过读取文件、网络接收数据等方式完成。在易语言中,可以使用`创建字节集`或`取字节集`等函数来生成字节集。 2. **遍历字节集**:接着,遍历字节集中的...

    统计一个字符串中某个字符的个数

    5. **编译和运行**:最后,我们需要使用汇编器(如NASM)将源代码编译为可执行文件,并通过操作系统提供的工具运行。 以上是使用汇编语言统计字符串中特定字符个数的基本步骤。在实际应用中,可能还需要考虑错误...

    J2ME 字符型转化成字节数组

    综上所述,字符和字节数组之间的转换是J2ME开发中一个重要的知识点,对于提高程序的效率和适应性具有重要意义。通过理解并熟练掌握这些转换方法,开发者可以在各种应用场景中更加灵活地处理数据。

    从二进制文件中取utf8的汉字

    在计算机科学领域,二进制文件是存储数据的基本方式,其中包含了字节序列,这些字节可以代表各种信息,如图像、音频、程序代码或文本。"从二进制文件中取utf8的汉字"这一主题涉及到的是如何从二进制文件中提取用UTF-...

    java通过文件头内容判断文件类型

    文件头是指文件开始的一段字节,不同的文件格式会有不同的文件头结构。例如,JPEG图像文件的开头通常是"FF D8 FF E0",PDF文档的开头是"%PDF-",ZIP压缩文件的头四个字节是"50 4B 03 04"等。这些特定的字节序列就是...

    VB接收多字节程序源码

    本文将详细探讨“VB接收多字节程序源码”,这一源码不仅提供了处理多字节数据流的基本框架,还为开发者提供了深入学习网络通信和数据处理的宝贵机会。 多字节数据流的接收在多种编程场景中都扮演着关键角色,尤其是...

    一句话jquery 取中文字节数

    题目提到的“一句话jquery取中文字节数”实际上是指利用jQuery来计算中文字符串的字节数。这在很多应用场景中非常实用,比如表单验证时限制用户输入的字符数量,特别是当需要区分英文和中文字符的长度时。 ### 二、...

    文件转换成字符存数据库

    这段代码实现了从字符串还原文件的功能。`ByteToFile`函数接受两个参数:`objString`为要还原的字符串,`savePath`为新文件的保存路径。 #### 注意事项 - **编码选择**:根据实际需求选择合适的编码方式,不同的...

    字节流实现从文件以字节读取信息

    对于文本文件,我们通常使用字符流(如`Reader`和`Writer`);而对于二进制文件(如图片、音频等),则需要使用字节流(如`InputStream`和`OutputStream`)。本文将详细介绍如何使用Java中的字节流技术来实现从文件...

    linux C++ 文本文件创建写入以及读取

    这段代码会创建一个名为`test.txt`的文件,并写入字符串"Hello, World!"。如果文件已经存在,`ofstream`默认会在文件末尾追加内容。如果文件无法打开,`!outfile`会为真,提示错误。 2. **读取文件**: 使用`...

    汇编课程设计文件拷贝程序

    在`_data`段中,定义了一系列的DB(定义字节)数据类型,用于存储不同类型的错误消息,例如"File not found."和"File copying error."。此外,还有一个名为`fbuffer`的缓冲区,用于存储用户输入的文件名和实际的文件...

Global site tag (gtag.js) - Google Analytics