小编Jim*_*nes的帖子

GZIP Java vs .NET

使用以下Java代码将字节[]压缩/解压缩到GZIP或从GZIP解压缩.第一个文本字节为gzip字节:

public static byte[] fromByteToGByte(byte[] bytes) {
    ByteArrayOutputStream baos = null;
    try {
        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
        baos = new ByteArrayOutputStream();
        GZIPOutputStream gzos = new GZIPOutputStream(baos);
        byte[] buffer = new byte[1024];
        int len;
        while((len = bais.read(buffer)) >= 0) {
            gzos.write(buffer, 0, len);
        }
        gzos.close();
        baos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return(baos.toByteArray());
}
Run Code Online (Sandbox Code Playgroud)

然后将压缩字节转换为未压缩字节的方法:

public static byte[] fromGByteToByte(byte[] gbytes) {
    ByteArrayOutputStream baos = null;
    ByteArrayInputStream bais = new ByteArrayInputStream(gbytes);
    try {
        baos = new ByteArrayOutputStream();
        GZIPInputStream gzis = …
Run Code Online (Sandbox Code Playgroud)

c# compression gzip gzipstream gzipinputstream

3
推荐指数
1
解决办法
4894
查看次数

从 unix 设备读取数据

在我的一台 RedHat Linux 服务器上已经设置了几台设备。/dev/ap 和 /dev/reuter。它们是美联社和路透社的新闻提要。在 unix 命令行中,我可以执行“cat /dev/ap”,它会一直等到消息从提要出现并将其打印到标准输出。一旦流中出现暂停, cat 就会完成。我尝试了“更多”并得到了相同的结果,同样的结果是 less -f(完整的味精,可能是运气)和 tail -f 在一个小时内没有输出。

我知道这些是流,但是当我尝试在 new Reader("/dev/ap") 上打开 Java BufferReader 时,我没有得到任何输出。使用以下运行方法:

public void run() {
    String line = null;
    while(true) {
        try {
            while((line = bsr.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}  
Run Code Online (Sandbox Code Playgroud)

几个问题:
1. 某些 unix 命令是否仅限于从文件打开流?例如尾巴?2.我在Java方面做错了什么,我无法捕获输出?错误的流类型,错误的包装器类型?吉姆

java unix device

3
推荐指数
1
解决办法
3532
查看次数

C#解压缩的问题

在sybase图像类型列中包含一些我想在C#应用程序中使用的数据.Java使用java.util.zip包压缩了数据.我想测试我可以解压缩C#中的数据.所以我编写了一个测试应用程序,将其从数据库中删除:

byte[] bytes = (byte[])reader.GetValue(0);  
Run Code Online (Sandbox Code Playgroud)

这给了我一个2479长度的压缩字节[].
然后我把它传递给一个看似标准的C#解压缩方法:

public static byte[] Decompress(byte[] gzBuffer)
{
    MemoryStream ms = new MemoryStream();
    int msgLength = BitConverter.ToInt32(gzBuffer, 0);
    ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
    byte[] buffer = new byte[msgLength];

    ms.Position = 0;
    GZipStream zip = new GZipStream(ms, CompressionMode.Decompress);
    zip.Read(buffer, 0, buffer.Length);

    return buffer;
}  
Run Code Online (Sandbox Code Playgroud)

msgLength的值是1503501432,这似乎超出了范围.原始文件应在5K-50k的范围内.无论如何,当我使用该值创建"缓冲区"时,我得到一个OutOfMemoryException.怎么了?吉姆

Java压缩方法如下:

public byte[] compress(byte[] bytes) throws Exception {
    byte[] results = new byte[bytes.length];
    Deflater deflator = new Deflater();
    deflater.setInput(bytes);
    deflater.finish();
    int len = deflater.deflate(results);
    byte[] out = new byte[len];
    for(int i=0; …
Run Code Online (Sandbox Code Playgroud)

c# compression

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

VS2008 C#错误".ctor"语言不支持

C#代码:

class Program
{
    static void Main(string[] args)
    { 
        TFWrapper tf;
        String lexDir = ".......";
        String lic = "........";
        String key = ".........";
        ArrayList cats = new ArrayList();
        Boolean useConj = false;
        String lang = "english";
        String encoding = "auto";
        tf = new TFWrapper(lexDir, lic, key, cats, useConj, lang, encoding);
    }
}  
Run Code Online (Sandbox Code Playgroud)

被调用的托管C++方法:

TFWrapper::TFWrapper(String^ mlexDir, String^ mlic, String^ mkey, ArrayList catList, Boolean^ m_useConj, String^ m_lang, String^ m_encoding);  
Run Code Online (Sandbox Code Playgroud)

C#的最后一行语言错误不支持获取'.ctor'

c# c++-cli

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

标签 统计

c# ×3

compression ×2

c++-cli ×1

device ×1

gzip ×1

gzipinputstream ×1

gzipstream ×1

java ×1

unix ×1