我在查找示例代码,演示如何创建可理解二进制数据的过滤器。链接示例非常感谢。Java I/O流过滤器的示例
回答
如果您的意思是FilterInputStream/FilterOutputStream的示例,那么您只需看看JDK就可以了。为了讨论我将讨论输入流变体,但输出流也是如此。例如,请查看InflaterInputStream。查看arry read()方法,并注意如何调用fill(),然后从底层输入流读取数据。然后,围绕该方法,它调用Inflater将实际将其从底层流中抽取的“原始”字节缓冲区转换为写入调用者数组的实际字节。
有一点需要考虑的是FilterInputStream有点浪费空间。只要你可以定义你的InputStream接受另一个底层的InputStream,并且在你从底层流中读取的所有读取方法中(记住理论上你只需要定义字节read()方法),那么特别是让你的类扩展FilterInputStream并不会真的给你带来太多的收益。例如,下面是输入流代码的一部分,它限制了底层流允许调用者读取的字节数(实际上,我们可以将一个流“切分”成多个子流,这很有用从档案文件读取时,例如):
class LimitedInputStream extends InputStream {
private InputStream in;
private long bytesLeft;
LimitedInputStream(InputStream in, long maxBytes) {
this.in = in;
this.bytesLeft = maxBytes;
}
@Override
public int read() throws IOException {
if (bytesLeft <= 0)
return -1;
int b = in.read();
bytesLeft--;
return b;
}
@Override
public int read(byte b[], int off, int len) throws IOException {
if (bytesLeft <= 0)
return -1;
len = (int) Math.min((long) len, bytesLeft);
int n = in.read(b, off, len);
if (n > 0)
bytesLeft -= n;
return n;
}
// ... missed off boring implementations of skip(), available()..
}
在这种情况下,我的应用程序,它确实给我买了没什么效果声明这个类作为FilterInputStream--,它是想在调用之间进行选择。 read()或super.read()来获取底层数据......!
举一个很好的例子,我建议看看java.io.DataInputStream
的源代码。该类向您展示了一种从“二进制”数据中解码原始类型和字符串的方法,从中可以生成更复杂的结构。
当然,其他应用程序可能会选择使用其他编码。例如,用于公钥基础结构应用程序。其文件格式为Lucene provides good documentation,专为简洁而设计。
如果您有Sun JDK,请在其顶部目录中查找“src.zip”。如果你告诉他们在哪里可以找到这个文件,大多数IDE将向你展示核心Java类的源代码。
- 1. JSF DataTable过滤器示例
- 2. 流媒体过滤器示例代码使用问题
- 3. Java 8流过滤器来过滤文件的特定部分
- 4. 使用wireshark的显示过滤器来过滤流量
- 5. 过滤器中的jQuery inArray示例
- 6. 创建过滤器示例java中的rapidminer运算符
- 7. 在Java中过滤ASCII流
- 8. Java 8中流的示例
- 9. cuda中的流过滤器
- 10. VSTSDK2.4的过滤示例源
- 11. AngularJs双向排序过滤器示例?
- 12. 元数据库过滤器示例
- 13. 液体标记图过滤器示例
- 14. DirectShow示例过滤器:如何使用?
- 15. Laravel文档过滤器示例
- 16. 结合SlickGrid过滤器示例
- 17. 将IO [String]过滤为IO [String]
- 18. Akka Java文件IO节流
- 19. Java io流关闭错误
- 20. Java IO异常 - 流关闭
- 21. PHP Lame流过滤器
- 22. 时间流过滤器
- 23. Graylog2流过滤器规则
- 24. 流星过滤器集合
- 25. 流和过滤器列表
- 26. 每个流星过滤器
- 27. Java JPA过滤器
- 28. 在使用php时添加过滤器参数到流过滤器://过滤器
- 29. 了解Java 8流的过滤方法
- 30. Java的UNIX过滤器