`

Java中文件与字节数组转换

    博客分类:
  • java
阅读更多

Java文件与字节数组转换

 

/**
	 * 返回一个byte数组
	 * @param file
	 * @return
	 * @throws IOException
	 */
	private  byte[] getBytesFromFile(File file){

		byte[] bytes = null;
		try {
			InputStream is = new FileInputStream(file);

			// 获取文件大小
			long length = file.length();

			if (length > Integer.MAX_VALUE) {

				// 文件太大,无法读取
				throw new IOException("File is to large " + file.getName());

			}

			// 创建一个数据来保存文件数据

			bytes = new byte[(int) length];

			// 读取数据到byte数组中

			int offset = 0;

			int numRead = 0;

			while (offset < bytes.length

			&& (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {

				offset += numRead;

			}

			// 确保所有数据均被读取

			if (offset < bytes.length) {

				throw new IOException("Could not completely read file "
						+ file.getName());

			}

			// Close the input stream and return bytes

			is.close();
		} catch (Exception e) {

           e.printStackTrace();
		}

		return bytes;

	}

 

/** 
     * 文件转化为字节数组 
     *  
     * @param file 
     * @return 
     */  
    public static byte[] getBytesFromFile(File file) {  
        byte[] ret = null;  
        try {  
            if (file == null) {  
                // log.error("helper:the file is null!");  
                return null;  
            }  
            FileInputStream in = new FileInputStream(file);  
            ByteArrayOutputStream out = new ByteArrayOutputStream(4096);  
            byte[] b = new byte[4096];  
            int n;  
            while ((n = in.read(b)) != -1) {  
                out.write(b, 0, n);  
            }  
            in.close();  
            out.close();  
            ret = out.toByteArray();  
        } catch (IOException e) {  
            // log.error("helper:get bytes from file process error!");  
            e.printStackTrace();  
        }  
        return ret;  
    }  

 

/** 
     * 把字节数组保存为一个文件 
     *  
     * @param b 
     * @param outputFile 
     * @return 
     */  
    public static File getFileFromBytes(byte[] b, String outputFile) {  
        File ret = null;  
        BufferedOutputStream stream = null;  
        try {  
            ret = new File(outputFile);  
            FileOutputStream fstream = new FileOutputStream(ret);  
            stream = new BufferedOutputStream(fstream);  
            stream.write(b);  
        } catch (Exception e) {  
            // log.error("helper:get file from byte process error!");  
            e.printStackTrace();  
        } finally {  
            if (stream != null) {  
                try {  
                    stream.close();  
                } catch (IOException e) {  
                    // log.error("helper:get file from byte process error!");  
                    e.printStackTrace();  
                }  
            }  
        }  
        return ret;  
    }

 

分享到:
评论

相关推荐

    java实现的字节数组转换成基本类型,基本类型转换成byte[]

    char short int long float double 转换成byte数组

    Java字节数组与常见类型转换工具

    Java字节数组与常见类型转换工具,包括byte[] 与int long double float string boolean 等类型的相互转换。

    字节数组流byte文件

    不过,通常的处理流程是将这些二进制数据读取到内存中,形成一个字节数组流(byte[]),然后可以利用各种库如nodejs中的Buffer类或Java中的ByteBuffer类来对这些数据进行读取、写入和转换。 在技术实现上,如果我们...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    - 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...

    java基本类型与byte数组互相转换.pdf

    Java 中的基本类型与 byte 数组之间的转换是非常重要的,以下是关于 Java 基本类型与 byte 数组互相转换的相关知识点: 1. short 类型转换成 byte 数组 在 Java 中,short 类型是 16 位的整数类型,而 byte 数组是...

    Java 将文件转为字节数组知识总结及实例详解

    在Java编程中,有时我们需要将文件转换为字节数组,以便进行数据传输、存储或者进一步处理。这个过程涉及到文件I/O操作,主要包括文件输入流(FileInputStream)和字节数组输出流(ByteArrayOutputStream)。下面...

    android byte字节数组转换十六进制字符串

    总结,Android中将字节数组转换为十六进制字符串的方法多种多样,可以根据项目需求和性能要求选择合适的方式。在开发过程中,了解并熟练掌握这些转换技巧,可以帮助我们更好地处理二进制数据,提升代码的可读性和可...

    java二进制,字节数组,字符,十六进制,BCD编码转换

    /* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */

    String(含Hex)与Byte数组互相转换[代码]

    在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...

    php字符串与byte字节数组转化类.zip

    介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...

    java中两个byte数组实现合并的示例

    在Java编程语言中,有时我们需要将两个或多个字节数组(`byte`数组)合并成一个新的单一数组。这种情况在处理二进制数据、文件读写或者与硬件交互时尤其常见。本文将深入探讨如何在Java中实现两个`byte`数组的合并,...

    Java数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -&gt; Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -&gt; Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    JAVA作业三字节数组转化.docx

    在Java编程语言中,字节数组(byte array)和基本数据类型如int之间的转换是常见的操作,特别是在处理网络通信、文件存储或者序列化时。本篇内容将详细讲解如何在Java中进行这两种类型的转化。 首先,我们来看如何...

    Java byte数组与其他类型转换

    在实际应用中,例如在Java的NIO(非阻塞I/O)中,`java.nio.Bits`和`HeapByteBuffer`类提供了更高级别的接口来执行这些转换,它们可以更方便地处理字节数组与其他类型之间的转换,并且支持缓冲区的读写操作,使得...

    Java将图片转换为byte数组例子总结

    通过上述两个方法,我们可以很容易地在Java程序中完成图片与字节数组之间的转换。这些方法在实际应用中非常实用,尤其是在处理大量图像数据时。需要注意的是,在处理图像时要确保资源得到妥善管理,避免内存泄漏等...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...

    image与字节数组byte的互转

    本文将详细探讨如何在Java、Python和C#这三种常用编程语言中实现图像(Image)与字节数组(byte[])之间的相互转换。 **Java中的转换** 1. **Image转byte[]** 在Java中,我们可以使用`FileInputStream`读取图片...

    float转byte数组测试小工具

    本工具“float转byte数组测试小工具”专注于将浮点数(float)转换为字节数组,这是一种在计算机内存中表示和传输数值的常用方式。在Java、C++、C#等编程语言中,这种转换尤其重要,因为它们使用不同的数据结构来...

    图片文件与Base64编码字节数组字符串互转

    在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...

Global site tag (gtag.js) - Google Analytics