?
Solved

How do I create a Java byte array containing the last x bytes of an inputstream?

Posted on 2010-09-23
6
Medium Priority
?
413 Views
Last Modified: 2013-11-23
In Java, I have an inputstream and want a byte array containing the last x bytes. What is the best way to do this?
0
Comment
Question by:rubixcube5
6 Comments
 
LVL 1

Expert Comment

by:mrdodger
ID: 33745684
Byte [] ba = new Byte[]
0
 

Author Comment

by:rubixcube5
ID: 33745812
hahahahaha! you've declared a byte array but that's it! it's empty! where is the inputstream?
0
 
LVL 10

Expert Comment

by:Hegemon
ID: 33745896
byte[] array = new byte[x];
inputStream.read (array, offset, x);

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:rubixcube5
ID: 33746275
Hegemon, I could use your solution where offset = length of bytes in the inputStream - x.
But then I have to read in the inputstream twice, once to get the length and then again to get the last x bytes.
What is a more efficient solution?
0
 
LVL 10

Accepted Solution

by:
Hegemon earned 500 total points
ID: 33746371
Have another array (anotherArray) of the same size and copy the content of the first array into it before each read() call.
The border case: if your read() returns -1 or 0, anotherArray contains the last x bytes.
Otherwise, if read() returns 0 < n < x, the last n bytes of x are stored in the first array from 0 onwards, up to n-1. The first x-n elements are at the end of anotherArray.
0
 
LVL 40

Expert Comment

by:Gurvinder Pal Singh
ID: 33746449
you can use StringWriter to convert InputStream to String first, then you can get the last x number of bytes from String into byte Array

http://stackoverflow.com/questions/309424/in-java-how-do-a-read-convert-an-inputstream-in-to-a-string
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#getBytes%28%29

but i think even if here InputStream  is read once, the solution proposed by @Hegemon #33745896 is the best possible solution
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…
Suggested Courses
Course of the Month16 days, 5 hours left to enroll

850 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question