`

Java NIO byte数组拼接

    博客分类:
  • Java
 
阅读更多
public static byte[] readFile (String filePath, int bufsize){
		
		byte[] retval = null;
		try {
			RandomAccessFile raf = new RandomAccessFile(filePath, "rw");
			FileChannel inChannel = raf.getChannel();
			ByteBuffer buf = ByteBuffer.allocate(bufsize);
			int byteRead = inChannel.read(buf);
			int readLength = 0;
			while (byteRead != -1){
				buf.flip();
				byte[] tempval = null;
                                //以下代码划重点!!!!!!!!
				if (retval == null){
					retval = new byte[byteRead];
				}else{
					tempval = retval;
					readLength = tempval.length;
					retval = new byte[readLength+byteRead];
					System.arraycopy(tempval, 0, retval, 0, tempval.length);
				}
				int i = readLength;
				while (buf.hasRemaining()){
					byte b = buf.get();
					retval[i] = b;
					i++;
				}
				buf.clear();
				byteRead = inChannel.read(buf);
			}
			raf.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retval;
	}

 

分享到:
评论

相关推荐

    科大讯飞语音识别java例子 输入音频文件输出音频文件中的内容可编辑的文字内容

    import java.nio.charset.StandardCharsets; public class SpeechToText { private static final String API_URL = "https://api.xunfei.cn/rtasr/v1/async"; private static final String API_KEY = "your_api_...

    java编程100例

    1. **基础语法与数据类型**:Java提供了八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。通过实例,你可以学习如何声明、初始化和操作这些...

    Java实现CSDN博客安全头x-ca-nonce与x-ca-signature的生成与测试.zip

    import java.nio.charset.StandardCharsets; import java.util.Base64; public class SignatureGenerator { private static final String HMAC_SHA256 = "HmacSHA256"; private static final String SECRET_KEY =...

    Java高级知识

    **1.2.6 Java I/O & NIO** - **Java I/O** - `InputStream/OutputStream` - `Reader/Writer` - 文件读写 - **Java NIO** - `FileChannel` - `ByteBuffer` - `Selector` - **文件编码与字符集** - UTF-8, GBK...

    java面试题答案——面试经典

    Java有8种基本数据类型,分别是:`char`、`byte`、`short`、`int`、`long`、`float`、`double`和`boolean`。`String`不是基本数据类型,它是一个类,属于对象类型。基本类型的值直接存储在栈中,而对象的引用存储在...

    java 面试题

    Java的基本数据类型包括:`byte`, `short`, `int`, `long`, `float`, `double`, `char`, `boolean`。这些类型直接存储在内存中,而`String`类则是引用类型,它在Java中是一个对象,存储在堆内存中。`String`类提供了...

    JAVA全章

    - **基本数据类型**:包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 - **变量和常量**:声明变量时需要指定数据类型,常量则用final关键字标识。 - **...

    java面试八股文.pdf

    - **基本数据类型**:byte、short、int、long、float、double、char、boolean。 - **引用数据类型**:类(Class)、接口(Interface)、数组。 4. **String、StringBuilder和StringBuffer的区别** - **String**...

    java 笔试、面试题

    以上只是Java面试题中的一些基础知识点,实际面试中还会涉及到更多高级概念,如并发控制、设计模式、集合框架、IO/NIO、网络编程、JVM内存管理等。理解并熟练掌握这些知识是成为一名合格的Java开发者的关键。

    史上最全阿里巴巴 JAVA 面试题总览(书签完整版)

    Java有八种基本数据类型,包括四个整型(byte、short、int、long)、两个浮点型(float、double)、一个字符型(char)和一个布尔型(boolean)。它们的字节占用分别为:byte(1字节)、short(2字节)、int(4字节...

    Java面试题-基础高级都有

    - **数据类型与变量**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。理解它们的范围和用法是基础。 - **运算符与表达式**:包括...

    JAVA面试题集锦.pdf

    使用java.nio.charset包中的Charset类进行编码转换,如new String(byte[], "GB2312").getBytes("ISO-8859-1")。 【数据库访问】 Statement用于执行静态SQL语句,PreparedStatement预编译SQL语句,能防止SQL注入,...

    互联网大厂Java面试题合集

    ### 互联网大厂Java面试题合集解析 #### 京东篇 ##### 8.1.0 SQL注入检测方法与SQLMap工作原理 - **SQL注入检测**:SQL注入是一种常见的Web安全漏洞,攻击者可以通过篡改SQL语句来获取未经授权的数据访问。检测SQL...

    BTA 常问的 Java基础39道常见面试题及详细答案.docx

    25. **Java IO与NIO**: IO基于流,是阻塞的;NIO是Non-blocking I/O,支持选择器和多路复用,更适合高并发场景。 26. **反射机制**: 反射允许程序在运行时动态获取类的信息(如类名、属性、方法)并调用。 27....

    技术栈1.pdf

    Java中的switch语句不能作用于byte、long或String类型。Java中的Math.round()函数用于四舍五入,Math.round(11.5)等于12,Math.round(-11.5)等于-11。 在Java中,float f=3.4是正确的,但直接将一个整数值加到short...

    java面试题(2022)

    11. **switch语句**:在Java 7之后,switch可以作用于byte、char、short、int、枚举类型和String。 12. **length()方法**:数组有length属性,不是方法;String有length()方法。 13. **跳出多重嵌套循环**:使用`...

    Java经典面试

    - Java NIO(New IO)提供了更高效的缓冲和非阻塞I/O操作。 #### 50. Java中的泛型(Generics) - 泛型允许在编译时检查类型安全,避免了运行时的类型转换错误。 - 泛型可以应用于类、接口和方法,提高了代码的复用...

    java performance7

    `ByteBuffer`提供了更高效的数据存取方式,相比普通的`byte[]`数组,它能够更好地利用内存缓存机制,减少CPU缓存未命中率,从而提高整体性能。 #### 七、字符串密码隐藏优化 在实现字符串密码隐藏功能时,可以优化...

Global site tag (gtag.js) - Google Analytics