小编h22*_*h22的帖子

如何从GZIPed数据的InputStream中获取解压缩数据的InputStream?

我调用一个返回gzip压缩文件的服务.我javax.activation.DataHandler.getInputStream();从响应中将数据作为InputStream(礼貌).

我想要做的是,在不向磁盘写入任何内容的情况下,在归档文件中的文件中获取解压缩数据的InputStream.在这种情况下,压缩文件是一个xml文档,我试图解组使用javax.xml.bind.Unmarshaller它来获取InputStream.

我正在尝试将InputStream写入OutputStream(解压缩数据),然后我需要将其写回InputStream.它还没有工作,所以我想我会看看是否有更好的(我希望如此)方法.

我可以将初始InputStream写入磁盘并获取一个gz文件,然后读取该文件,从中获取压缩文件并从那里开始,但我宁愿将其全部保存在内存中也是可能的.

更新1:这是我的当前(不工作 - 得到"不是GZIP格式"的例外):

    ByteArrayInputStream xmlInput = null;
    try {
        InputStream in = dh.getInputStream(); //dh is a javax.activation.DataHandler
        BufferedInputStream bis = new BufferedInputStream(in);
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
        int bytes_read = 0;
        byte[] dataBuf = new byte[4096];
        while ((bytes_read = bis.read(dataBuf)) != -1) {
            bo.write(dataBuf, 0, bytes_read);
        }
        ByteArrayInputStream bin = new ByteArrayInputStream(bo.toByteArray());
        GZIPInputStream gzipInput = new GZIPInputStream(bin);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        dataBuf = new byte[4096];;
        bytes_read = 0;
        while ((bytes_read = …
Run Code Online (Sandbox Code Playgroud)

java io gzip gzipinputstream

9
推荐指数
2
解决办法
9080
查看次数

在java中的原始套接字

我是java socket编程的新手.我已经知道java只处理Internet Domain Sockets,它将支持UDP和TCP以及Raw IP Protocols.我想知道java支持Raw Sockets而不使用任何第三方应用程序?如果有可能,任何人都可以用一个小例子来帮助我吗?任何小建议都会非常棒!

java sockets raw-sockets

9
推荐指数
1
解决办法
2万
查看次数

Android版本代码常量是否适用于旧版本?

我可以在较旧的Android运行时使用Android版本代码常量吗?例如,

if (android.os.Build.VERSION.SDK_INT >= 
   android.os.Build.VERSION_CODES.HONEYCOMB) ...
Run Code Online (Sandbox Code Playgroud)

当HONEYCOMB首次定义此常量时,它会在运行Android操作系统的旧设备上运行而不会崩溃吗?假设我们用最近的SDK编译它?

versioning android

8
推荐指数
1
解决办法
609
查看次数

Java:创建GZIPInputStream时出错:不是GZIP格式

我正在尝试使用以下Java代码来压缩和解压缩String.但是,从新的ByteArrayInputStream对象创建新GZipInputStream对象的行会抛出"java.util.zip.ZipException:Not in GZIP format"异常.有谁知道如何解决这个问题?

        String orig = ".............";

        // compress it
        ByteArrayOutputStream baostream = new ByteArrayOutputStream();
        OutputStream outStream = new GZIPOutputStream(baostream);
        outStream.write(orig.getBytes());
        outStream.close();
        String compressedStr = baostream.toString();

        // uncompress it
        InputStream inStream = new GZIPInputStream(new ByteArrayInputStream(compressedStr.getBytes()));
        ByteArrayOutputStream baoStream2 = new ByteArrayOutputStream();
        byte[] buffer = new byte[8192];
        int len;
        while((len = inStream.read(buffer))>0)
            baoStream2.write(buffer, 0, len);
        String uncompressedStr = baoStream2.toString();
Run Code Online (Sandbox Code Playgroud)

java compression gzip gzipinputstream

7
推荐指数
2
解决办法
2万
查看次数

如何将字节数组从android java类传递给JNI C NDK?

我在java类中有字节数组,我想将该字节数组传递给JNI C类,我无法在JNI C中访问该数组,请帮忙.

android

7
推荐指数
1
解决办法
1万
查看次数

我可以直接通过 HTTP 发送二进制数据吗?

我的意思是,我可以期待工作吗

POST / HTTP/1.1
Content-Type: application/octet-stream
Content-Length: 27

[27 bytes of binary data]
Run Code Online (Sandbox Code Playgroud)

并且二进制数据是任意二进制数据,不是使用所有8 位进行Base64 编码,而不是 7 位。接收应用程序是自定义应用程序,它知道如何处理数据。

当然,我可以测试,但我需要知道这是否可能适用于真实服务器和网络,而不仅仅是在本地主机上运行的客户端和服务器之间。

http

7
推荐指数
2
解决办法
6113
查看次数

QList 上的 C++11 基于范围的循环中的“容器分离”是什么?这只是性能问题吗?

这个问题包含一些解决该问题的建议,我想更深入地了解问题到底是:

 QList<QString> q;
 for (QString &x: q) { .. }
Run Code Online (Sandbox Code Playgroud)
  1. 除非容器被声明const,否则 Qt 是否会创建列表的副本,然后迭代该副本?这不是最好的,但如果列表很小(比如 10-20 个 QString),这是可以忍受的。
  2. 这仅仅是性能问题还是可能是一些更深层次的问题?假设我们在循环运行时不添加/删除元素。
  3. 循环中值的修改(假设它是一个引用)仍然有效还是从根本上被破坏了?

c++ foreach qt copy-on-write

7
推荐指数
1
解决办法
671
查看次数

如何解压缩字节数组中的gzip压缩数据?

我有一个类,它有一个接收对象作为参数的方法.通过RMI调用此方法.

public RMIClass extends Serializable {
    public RMIMethod(MyFile file){
        // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

MyFile有一个名为"body"的属性,它是一个字节数组.

public final class MyFile implements Serializable {

    private byte[] body = new byte[0];
    //.... 

    public byte[] getBody() {
        return body;
    }
    //....
}
Run Code Online (Sandbox Code Playgroud)

此属性包含由另一个应用程序解析的文件的gzip压缩数据.

在执行进一步的操作之前,我需要解压缩此字节数组.

我看到的解压缩gzip压缩数据的所有例子都假设我想将它写入磁盘并创建一个物理文件,我不这样做.

我该怎么做呢?

提前致谢.

java io gzipinputstream

6
推荐指数
2
解决办法
6503
查看次数

在SuperDevMode中运行

SuperDevMode但是,当http://localhost:9876/访问URL:时我试过了

Dev Mode On点击,我得到这个:

Can't find any GWT Modules on this page.
Run Code Online (Sandbox Code Playgroud)

我能错过什么?我已经做了

$mvn gwt:compile
$mvn gwt:run-codeserver
Run Code Online (Sandbox Code Playgroud)

我在POM中有这些版本:

    <gwt.version>2.5.0</gwt.version>
    <gwt.maven.version>2.5.0</gwt.maven.version>
Run Code Online (Sandbox Code Playgroud)

我是否需要更新GWT版本或GWT Maven版本?或者我错过了什么?

java gwt maven gwt-super-dev-mode

6
推荐指数
2
解决办法
6232
查看次数

非指针类成员:它有多好?

我有一个非指针类成员,我需要在构造函数中初始化:

class Alerter {

protected:
  Timer timer;

public:
  Alerter(int interval);
};
Run Code Online (Sandbox Code Playgroud)

然后

Alerter::Alerter(int interval) {
    timer = createTimer(interval);
}
Run Code Online (Sandbox Code Playgroud)

(简化代码只是为了演示问题).

我有一些疑问和担忧,timer可能是首先使用其无参数构造函数创建的,之后该实例将被createTimer函数返回的内容覆盖.

方法有多好?可能的答案可能是:

  • 由无参数构造函数创建的"空计时器"实际上并未创建,因为编译器足够聪明,可以在覆盖值之前找不到它.
  • 创建了空计时器,但这没关系,因为编写良好的代码应支持一次性实例的廉价无参数构造函数.
  • 最好使用指针.

哪些假设(或其他可能的东西)最正确?

c++ c++14

6
推荐指数
1
解决办法
365
查看次数