`

流操作工具类

 
阅读更多
public abstract class CIOUtil {
public static final String CHARSET = "UTF-8";

/**
* 从输入流中读布尔
*
* @param is
* @return
* @throws IOException
*/
public static boolean readBoolean(DataInputStream is) throws IOException {
return is.readBoolean();
}

/**
* 从流中读字节
*
* @param is
* @param s
* @return
* @throws IOException
*/
public static byte readByte(DataInputStream is)

throws IOException {
return readBytes(is, 1)[0];
}

/**
* 从流中读定长度字节数组
*
* @param is
* @param s
* @return
* @throws IOException
*/
public static byte[] readBytes(DataInputStream is, int i)

throws IOException {
byte[] data = new byte[i];
is.readFully(data);

return data;
}

/**
* 从输入流中读字符
*
* @param is
* @return
* @throws IOException
*/
public static char readChar(DataInputStream is) throws IOException {
return (char) readShort(is);
}

/**
* 从输入流中读双精度
*
* @param is
* @return
* @throws IOException
*/
public static double readDouble(DataInputStream is) throws IOException {
return Double.longBitsToDouble(readLong(is));
}

/**
* 从输入流中读单精度
*
* @param is
* @return
* @throws IOException
*/
public static float readFloat(DataInputStream is) throws IOException {
return Float.intBitsToFloat(readInt(is));
}

/**
* 从流中读整型
*
* @param is
* @return
* @throws IOException
*/
public static int readInt(DataInputStream is) throws IOException {
return Integer.reverseBytes(is.readInt());
}

/**
* 从流中读长整型
*
* @param is
* @return
* @throws IOException
*/
public static long readLong(DataInputStream is) throws IOException {
return Long.reverseBytes(is.readLong());
}

/**
* 从流中读短整型
*
* @param is
* @return
* @throws IOException
*/
public static short readShort(DataInputStream is) throws IOException {
return Short.reverseBytes(is.readShort());
}

/**
* 从输入流中读字符串 字符串 结构 为 一个指定字符串字节长度的短整型+实际字符串
*
* @param is
* @return
* @throws IOException
*/
public static String readUTF(DataInputStream is) throws IOException {
short s = readShort(is);
byte[] str = new byte[s];

is.readFully(str);

return new String(str, CHARSET);
}

/**
* 向输出流中写布尔
*
* @param os
* @param b
* @throws IOException
*/
public static void writeBoolean(DataOutputStream os, boolean b)

throws IOException {
os.writeBoolean(b);
}

/**
* 向流中写字节
*
* @param os
* @param data
* @throws IOException
*/
public static void writeByte(DataOutputStream os, byte data)

throws IOException {
os.write(data);
}

/**
* 向输出流中写字节数组
*
* @param os
* @param data
* @throws IOException
*/
public static void writeBytes(DataOutputStream os, byte[] data)

throws IOException {
os.write(data);
}

/**
* 向输出流中写字符
*
* @param os
* @param b
* @throws IOException
*/
public static void writeChar(DataOutputStream os, char b)

throws IOException {
writeShort(os, (short) b);
}

/**
* 向输出流中写双精度
*
* @param os
* @param d
* @throws IOException
*/
public static void writeDouble(DataOutputStream os, double d)

throws IOException {
writeLong(os, Double.doubleToLongBits(d));
}

/**
* 向输出流中写单精度
*
* @param os
* @param f
* @throws IOException
*/
public static void writeFloat(DataOutputStream os, float f)

throws IOException {
writeInt(os, Float.floatToIntBits(f));
}

/**
* 向输出流中写整型
*
* @param os
* @param i
* @throws IOException
*/
public static void writeInt(DataOutputStream os, int i) throws IOException {
os.writeInt(Integer.reverseBytes(i));
}

/**
* 向输出流中写长整型
*
* @param os
* @param l
* @throws IOException
*/
public static void writeLong(DataOutputStream os, long l)

throws IOException {
os.writeLong(Long.reverseBytes(l));
}

/**
* 向输出流中写短整型
*
* @param os
* @param s
* @throws IOException
*/
public static void writeShort(DataOutputStream os, short s)

throws IOException {
os.writeShort(Short.reverseBytes(s));
}

/**
* 向输出流中写字符串 字符串 结构 为 一个指定字符串字节长度的短整型+实际字符串
*
* @param os
* @param str
* @throws IOException
*/
public static void writeUTF(DataOutputStream os, String str)

throws IOException {
str = StringFormat.getNullString(str);
byte[] data = str.getBytes(CHARSET);
writeShort(os, (short) data.length);
os.write(data);
}
}
分享到:
评论

相关推荐

    java操作工具类

    Java操作工具类是Java开发中常见的一种代码组织方式,它集合了各种常用的功能函数,以提高代码复用性和开发效率。这些工具类通常包含了对字符串、数组、集合、日期时间等基本数据类型的操作,以及文件I/O、网络通信...

    C++文件操作工具类

    "C++文件操作工具类"是一个专门为C++开发者设计的实用工具,它简化了对文件进行读写、创建、删除等操作的过程。 首先,我们要理解C++中的文件操作基本概念。C++通过标准库中的`fstream`头文件提供了一套接口,允许...

    Java开发常用Util工具类

    字符串工具类/数据类型转换类/集合工具类/数组工具类/Properties文件操作类/常用流操作工具类/编码工具类/Json工具类/日期工具类/下载文件工具类/解压ZIP工具类/文件编码转码

    文件操作工具类

    文件操作工具类主要用于简化和标准化与文件交互的流程,包括但不限于文件的创建、读取、写入、追加、删除以及更复杂的IO操作。以下是对这些知识点的详细阐述: 一、文件创建 在编程中,我们通常会使用特定的API或...

    Excel POI 工具类

    10. **数据流处理**:除了处理本地文件,工具类也可能支持从网络流或内存中读写Excel,便于在Web应用中处理Excel数据。 通过使用这样的"Excel POI 工具类",开发人员可以避免重复编写相同的代码,提高代码的可维护...

    [史上最全] 文件处理工具类 java版 处理文件流, 文件目录递归等

    `FileUtils` 是一个强大的文件处理工具类,它提供了丰富的API来简化文件操作,避免了许多常见的错误和陷阱。通过使用该工具类,开发者可以更加专注于业务逻辑的实现,提高开发效率和代码质量。在实际项目中,强烈...

    c# 操作工具类-好用的类库

    本篇文章将深入探讨如何创建和使用C#操作工具类,并分享一些实用的类库,帮助开发者提高代码效率和可维护性。 首先,让我们了解如何创建一个基础的C#工具类。通常,工具类是以静态类的形式存在的,因为它们不需要...

    redis操作工具类

    在Java开发中,为了方便地进行Redis操作,通常会封装一个`Redis操作工具类`,以便于统一管理Redis的连接、命令执行以及异常处理等。下面我们将详细探讨这个工具类可能包含的内容和实现方式。 1. **连接池配置** ...

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\001 流\文件操作整体 D:\002 我的工具类\001 流\文件操作整体\FileEncodingUtil.java D:\002 我的工具类\001 流\文件操作整体\FileReadImpl.java D:\002 我的工具类\001 流\文件操作整体\...

    Rabbitmq工具类,java工具类RabbitmqUtil

    9. **关闭资源**:在完成操作后,工具类应提供关闭通道和连接的方法,以释放系统资源。 在实际应用中,`RabbitmqUtil`的使用方式可能是这样的: ```java public class RabbitmqTest { public static void main...

    java操作redis工具类

    为了方便地在Java应用中操作Redis,开发者通常会创建一个工具类(Util),封装各种Redis操作方法。这个"java操作redis工具类"就是这样的一个实用组件,它简化了与Redis服务器的交互,使得代码更简洁、易维护。 首先...

    JAVA操作mysql工具类

    这篇博客的作者提供了一个自封装的JAVA操作MySQL数据库的工具类,这有助于简化数据库的交互过程,提高代码的可读性和可维护性。这里我们将深入探讨这个工具类可能涉及的关键知识点。 1. **JDBC(Java Database ...

    三个工具类

    文件操作工具类通常包含读写文件、创建目录、删除文件等与文件系统交互的方法。比如,Java的`java.io.File`和`java.nio`包下的工具类,提供了丰富的文件操作功能。学习这类工具类,你需要理解文件系统的原理、IO流...

    java实现对文件的各种操作的工具类.md

    # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...

    java实现限流,封装的工具类

    总的来说,Java中的Semaphore是实现限流的一个有效工具,尤其适用于控制并发线程数量。但若你需要对数据的处理速率进行精确控制,可能需要结合其他工具或自定义算法来实现。在设计限流策略时,应充分考虑系统的性能...

    C# 常用工具类 日志操作(log4net) 配置管理、字符串工具、DateTime工具、图片工具、文件工具、加密工具 等

    这些工具类通常包含对特定任务的封装,如日志记录、配置管理、字符串处理、日期时间操作、图像处理、文件操作以及安全相关的加密算法。下面将详细解释这些工具类的主要功能和应用场景。 1. **日志操作(log4net)**: ...

    java工具类集合

    - 这是一个包含各种静态方法的工具类,用于操作集合,如排序、查找、填充、反转、比较等。 3. `java.util.HashMap` 和 `java.util.TreeMap`: - `HashMap` 是基于哈希表实现的键值对容器,提供O(1)的平均查找速度...

    自己写的java中文件的操作工具类,包括对目录的管理

    这个“自己写的java中文件的操作工具类”显然提供了一种自定义的方式来管理和操作文件及目录。下面将详细介绍相关知识点: 1. **文件操作**:在Java中,`java.io`包提供了丰富的类来执行文件操作,如`File`类用于...

    一些java常用的工具类

    在IO操作方面,Java的java.io包提供了基础的输入输出流,但实际应用中可能需要更高级的功能,如NIO(New IO)提供非阻塞I/O,Apache Commons IO提供了更多实用的IO工具类。 网络编程中,Java.net包提供了Socket和...

    FTP操作工具类

    FTP(File Transfer Protocol)操作工具类是编程领域中用于实现FTP文件传输协议功能的类库或模块。在软件开发中,FTP工具类通常包含了连接、登录FTP服务器,上传、下载文件,创建、删除目录等常见操作,使得开发者...

Global site tag (gtag.js) - Google Analytics