小编h22*_*h22的帖子

如何解压缩字节数组中的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
查看次数

如何在没有已知初始值的情况下处理原始类型的声明(C++)?

在某些情况下,我会在不先知道变量值的情况下声明变量,例如:

int a;
if (c1) {
  a = 1;
} else if (c2) {
  a = 2;
} else if (c3) {
  a = -3;
} 
do_something_with(a);
Run Code Online (Sandbox Code Playgroud)

无论如何分配一些明显错误的值-1000(使潜在的错误更容易重现)是标准的专业实践吗?还是最好不要添加只要没有错误就没有任何用处的代码?从一方面来看,消除随机性看起来很合理,但从另一方面来看,神奇的甚至“明显错误”的数字在某种程度上看起来并不有吸引力。

在许多情况下,可以在第一次知道值时进行声明,或者使用三元运算符,但在这里我们需要它嵌套,所以也相当笨拙。

在块内声明会过早地将变量移出作用域。

或者这种情况会证明稍后使用std::optional<int> a和 是合理的assert(a),以确保我们具有价值吗?

编辑:如果突然所有 3 个条件都为假,我正在谈论的错误就会发生,而这应该“绝对不会发生”。

c++ design-patterns

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

C#到Java:Base64String,MemoryStream,GZipStream

我有一个在.NET中压缩过的Base64字符串,我想将其转换回Java中的字符串。我正在寻找与C#语法等效的Java,尤其是:

  • Convert.FromBase64String
  • 内存流
  • GZipStream

这是我想转换的方法:

public static string Decompress(string zipText) {
    byte[] gzipBuff = Convert.FromBase64String(zipText);

    using (MemoryStream memstream = new MemoryStream())
    {
        int msgLength = BitConverter.ToInt32(gzipBuff, 0);
        memstream.Write(gzipBuff, 4, gzipBuff.Length - 4);

        byte[] buffer = new byte[msgLength];

        memstream.Position = 0;
        using (GZipStream gzip = new GZipStream(memstream, CompressionMode.Decompress))
        {
            gzip.Read(buffer, 0, buffer.Length);
        }
        return Encoding.UTF8.GetString(buffer);
     }
}
Run Code Online (Sandbox Code Playgroud)

任何指针表示赞赏。

c# java memorystream gzipstream gzipinputstream

5
推荐指数
1
解决办法
7658
查看次数

J2ME的GZIPInputStream实现

是否有适用于J2ME的GZIPInputStream实现.我更喜欢Apache风格许可证

gzip java-me gzipinputstream

5
推荐指数
1
解决办法
1241
查看次数

GZIPInputStream在Android 2.3中因IOException失败,但在以前的所有版本中都能正常工作吗?

我今天将手机更新为Gingerbread(2.3.2)并启动了我开发的应用程序并发现它无法加载其数据.该应用程序在我从1.6到2.2测试的每个其他Android版本上运行正常,但随后在Gingerbread中出现了IOException.有人知道GZipInputStream或URL.openStream()中是否有变化吗?

有问题的代码类似于以下内容:

InputStream in = null;
GZIPInputStream zin = null;
URL url = null;
try {
    url = new URL("http://www.test.com/gzipped_data.gz");
    in = url.openStream();
    zin = new GZIPInputStream(in);
}
catch (MalformedURLException e) { 
    return false;
} 
catch (IOException e) {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

在1.6到2.2中,这段代码运行正常,在2.3中我得到一个IOException,其中包含有关魔术块不正确的消息.我假设openStream发生了一些变化,搞乱了MIME类型或者这个数据上的东西.我读了其他地方,openStream不是处理HTTP连接最可靠的方法,所以这可能是重写我的连接代码的一个很好的借口.

android gzip gzipinputstream

5
推荐指数
1
解决办法
1561
查看次数

GZIPInputStream 和字符集

我有一个包含拉丁文、西里尔文和汉字的文本。我尝试使用 GZIPInputStream压缩字符串(超过bytes[]GZIPOutputStream并解压缩它。但我无法将所有字符转换回原始字符。有些显示为?

我认为 UTF-16 可以完成这项工作。

有什么帮助吗?

问候

这是我的代码:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.Inflater;
import java.util.zip.ZipException;

public class CompressUncompressStrings {

    public static void main(String[] args) throws UnsupportedEncodingException {

        String sTestString="äöüäöü ??";
        System.out.println(sTestString);
        byte bcompressed[]=compress(sTestString.getBytes("UTF-16"));
        //byte bcompressed[]=compress(sTestString.getBytes());
        String sDecompressed=decompress(bcompressed);
        System.out.println(sDecompressed);
    }
    public static byte[] compress(byte[] content){
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try{
            GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);
            gzipOutputStream.write(content);
            gzipOutputStream.close();
        } catch(IOException …
Run Code Online (Sandbox Code Playgroud)

java compression gzipinputstream

5
推荐指数
1
解决办法
2146
查看次数

GZIP解压缩字符串和字节转换

我的代码有问题:

private static String compress(String str)
{
    String str1 = null;
    ByteArrayOutputStream bos = null;
    try
    {
        bos = new ByteArrayOutputStream();
        BufferedOutputStream dest = null;

        byte b[] = str.getBytes();
        GZIPOutputStream gz = new GZIPOutputStream(bos,b.length);
        gz.write(b,0,b.length);
        bos.close();
        gz.close();

    }
    catch(Exception e) {
        System.out.println(e);
        e.printStackTrace();
    }
    byte b1[] = bos.toByteArray();
    return new String(b1);
}

private static String deCompress(String str)
{
    String s1 = null;

    try
    {
        byte b[] = str.getBytes();
        InputStream bais = new ByteArrayInputStream(b);
        GZIPInputStream gs = new GZIPInputStream(bais);
        ByteArrayOutputStream baos …
Run Code Online (Sandbox Code Playgroud)

java gzip gzipoutputstream

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

片段getActivity()在Activity JUnit测试中返回null

我为Activity编写了Android JUnit测试实例化片段(实际上是制表符).在测试期间,当我尝试对这些选项卡执行任何操作时,它们会崩溃,因为其中的getActivity()方法返回null.实际应用程序(不是测试)从不显示此行为,并且片段getActivity()始终返回正确的父活动.我的测试用例如下:

public class SetupPanelTest extends ActivityUnitTestCase<MyAct> {

    FSetup s;   

    public SetupPanelTest() {
    super(MyAct.class);
    }

    protected void setUp() throws Exception {
        super.setUp();
        startActivity(new Intent(), null, null);
        final MyAct act = getActivity();

        AllTabs tabs = act.getTabs();
        String tabname = act.getResources().getString(R.string.configuration);

        // This method instantiates the activity as said below
        s = (FSetup) tabs.showTab(tabname);
        FragmentManager m = act.getFragmentManager();
        // m.beginTransaction().attach(s).commit(); 
        //     ... and even this does not help when commented out

        assertTrue(s instanceof FSetup);  // Ok     
        assertEquals(act, s.getActivity()); // Failure
    }

    public …
Run Code Online (Sandbox Code Playgroud)

junit android unit-testing android-fragments

5
推荐指数
1
解决办法
3403
查看次数

如何在 Spring 中覆盖默认的 AsyncConfigurer(摆脱“可能只存在一个配置器”)

我必须让我自己的 Executor 使用 Spring @Async 注释。为此,我按照以下方式编写了课程

@Configuration
@EnableAsync
public class ConnectedThreads implements AsyncConfigurer {

  @Override
  public Executor getAsyncExecutor() {
    return ...
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此类运行 Spring Boot 应用程序时,应用程序崩溃了

Caused by: java.lang.IllegalStateException: Only one AsyncConfigurer may exist
    at org.springframework.scheduling.annotation.AbstractAsyncConfiguration.setConfigurers(AbstractAsyncConfiguration.java:68)
Run Code Online (Sandbox Code Playgroud)

项目中没有其他配置器。这是一个非常小的项目,我可以完全控制它。我自己怀疑自定义配置器可能只是与默认配置器冲突。

有没有可能对 Spring 说这是我需要的配置器,它不应该寻找任何其他配置器?

java spring asynchronous spring-boot

5
推荐指数
0
解决办法
1909
查看次数