pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/dampcake/bencode/tree/refs/heads/main

GitHub - dampcake/bencode at refs/heads/main · GitHub
Skip to content

dampcake/bencode

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bencode

Build Status Coverage Status Maven GitHub license

Bencode Input/Output Streams for Java

Requires JDK 1.8 or higher

Bencode Spec

Bencode Wikipedia

Javadoc

http://dampcake.github.io/bencode

Usage

Maven

<dependency>
    <groupId>com.dampcake</groupId>
    <artifactId>bencode</artifactId>
    <version>1.4.2</version>
</dependency>

Gradle

compile 'com.dampcake:bencode:1.4.2'

Examples

Bencode Data

Bencode bencode = new Bencode();
byte[] encoded = bencode.encode(new HashMap<Object, Object>() {{
    put("string", "value");
    put("number", 123456);
    put("list", new ArrayList<Object>() {{
        add("list-item-1");
        add("list-item-2");
    }});
    put("dict", new ConcurrentSkipListMap() {{
        put(123, "test");
        put(456, "thing");
    }});
}});

System.out.println(new String(encoded, bencode.getCharset()));

Outputs: d4:dictd3:1234:test3:4565:thinge4:listl11:list-item-111:list-item-2e6:numberi123456e6:string5:valuee

Decode Bencoded Data:

Bencode bencode = new Bencode();
Map<String, Object> dict = bencode.decode("d4:dictd3:1234:test3:4565:thinge4:listl11:list-item-111:list-item-2e6:numberi123456e6:string5:valuee".getBytes(), Type.DICTIONARY);

System.out.println(dict);

Outputs: {dict={123=test, 456=thing}, list=[list-item-1, list-item-2], number=123456, string=value}

Write bencoded data to a Stream:

ByteArrayOutputStream out = new ByteArrayOutputStream();
BencodeOutputStream bencoder = new BencodeOutputStream(out);

bencoder.writeDictionary(new HashMap<Object, Object>() {{
    put("string", "value");
    put("number", 123456);
    put("list", new ArrayList<Object>() {{
        add("list-item-1");
        add("list-item-2");
    }});
    put("dict", new ConcurrentSkipListMap() {{
        put("dict-item-1", "test");
        put("dict-item-2", "thing");
    }});
}});

System.out.println(new String(out.toByteArray()));

Outputs: d4:dictd11:dict-item-14:test11:dict-item-25:thinge4:listl11:list-item-111:list-item-2e6:numberi123456e6:string5:valuee

Read bencoded data to a Stream:

String input = "d4:dictd11:dict-item-14:test11:dict-item-25:thinge4:listl11:list-item-111:list-item-2e6:numberi123456e6:string5:valuee";
ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes());
BencodeInputStream bencode = new BencodeInputStream(in);

Type type = bencode.nextType(); // Returns Type.DICTIONARY
Map<String, Object> dict = bencode.readDictionary();

System.out.println(dict);

Outputs: {dict={dict-item-1=test, dict-item-2=thing}, list=[list-item-1, list-item-2], number=123456, string=value}

About

Bencode Input/Output Streams for Java

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy