×
Namespaces

Variants
Actions
(Difference between revisions)

Converting a resource into a byte array in Java ME

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot change of template (Template:CodeSnippet) - now using Template:ArticleMetaData)
tiviinik (Talk | contribs)
(Tiviinik -)
Line 1: Line 1:
 +
[[Category:Java ME]][[Category:MIDP 2.0]][[Category:Code Examples]][[Category:WMA 2.0 (JSR-205)]][[Category:S60 3rd Edition, Feature Pack 1]][[Category:Code Snippet]]
 
__NOTOC__
 
__NOTOC__
 
__NOEDITSECTION__
 
__NOEDITSECTION__
Line 13: Line 14:
 
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
|sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
+
|sdk=[http://www.developer.nokia.com/Develop/Java/ Nokia SDK 1.0 for Java]
 
|devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) -->
 
|devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) -->
 
|signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer -->
 
|signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer -->
 
|capabilities=<!-- Capabilities required (e.g. Location, NetworkServices. -->)
 
|capabilities=<!-- Capabilities required (e.g. Location, NetworkServices. -->)
 +
|update-by=[[User:tiviinik]]
 +
|update-timestamp=20120110
 +
|review-by=<!-- [[User:XXXX]]-->
 +
|review-timestamp=<!-- 20110105-->
 
|author=[[User:Tapla]]
 
|author=[[User:Tapla]]
 
}}
 
}}
Line 57: Line 62:
 
private byte[] obtainByteData(String filename) throws IOException {
 
private byte[] obtainByteData(String filename) throws IOException {
 
     InputStream inputStream = getClass().getResourceAsStream(filename);
 
     InputStream inputStream = getClass().getResourceAsStream(filename);
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1024);
+
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    byte[] bytes = new byte[512];
+
  
 
     // Read bytes from the input stream in bytes.length-sized chunks and write
 
     // Read bytes from the input stream in bytes.length-sized chunks and write
 
     // them into the output stream
 
     // them into the output stream
     int readBytes;
+
     for (int readBytes = inputStream.read(); readBytes >= 0; readBytes = inputStream.read())
    while ((readBytes = inputStream.read(bytes)) > 0) {
+
         outputStream.write(readBytes);
         outputStream.write(bytes, 0, readBytes);
+
    }
+
  
 
     // Convert the contents of the output stream into a byte array
 
     // Convert the contents of the output stream into a byte array
 
     byte[] byteData = outputStream.toByteArray();
 
     byte[] byteData = outputStream.toByteArray();
   
+
 
 
     // Close the streams
 
     // Close the streams
 
     inputStream.close();
 
     inputStream.close();
Line 115: Line 117:
  
 
* [[CS000978 - Sending a multipart MMS]]
 
* [[CS000978 - Sending a multipart MMS]]
 
[[Category:Java ME]][[Category:MIDP 2.0]][[Category:Code Examples]][[Category:WMA 2.0 (JSR-205)]][[Category:S60 3rd Edition, Feature Pack 1]][[Category:Code Snippet]]
 

Revision as of 17:15, 10 January 2012

Template:KBCS

Article Metadata
Tested with
Devices(s): Nokia N95 8GB
CompatibilityPlatform Security
Capabilities: )
Article
Keywords: java.lang.Class, java.io.InputStream, java.io.ByteArrayOutputStream, java.io.IOException, java.lang.Class.getResourceAsStream(), java.io.InputStream.read(), java.io.ByteArrayOutputStream.write(), java.io.ByteArrayOutputStream.toByteArray(), java.io.InputStream.close(), java.io.ByteArrayOutputStream.close()
Created: tapla (27 May 2008)
Updated: tiviinik (10 Jan 2012)
Last edited: tiviinik (10 Jan 2012)

Overview

This code snippet demonstrates how to convert a resource into a byte array. The snippet assumes that the resource is included in the JAR file, which is used to distribute the application.

Example: To include a file to the JAR package in NetBeans 6.1, do as follows:

  1. In the Projects window (select Window > Projects if it's not visible), open the project node for the project to which you want to add the file.
  2. Right-click on the Resources node under the project and choose Add Folder. The Add Folder dialog box opens.
  3. Select the folder where the resource is (for example, dist/images).
  4. Click Open. The folder is added to the project.
  5. Clean and build the project (right-click on the project node and select Clean & Build).
  6. The resource can be obtained in the code, for example, like this:
InputStream inputStream = getClass().getResourceAsStream("image.jpg");
// ...

Source

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* Constructs a byte array and fills it with data that is read from the
* specified resource.
* @param filename the path to the resource
* @return the specified resource as a byte array
* @throws java.io.IOException if the resource cannot be read, or the
* bytes cannot be written, or the streams cannot be closed
*/

private byte[] obtainByteData(String filename) throws IOException {
InputStream inputStream = getClass().getResourceAsStream(filename);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
 
// Read bytes from the input stream in bytes.length-sized chunks and write
// them into the output stream
for (int readBytes = inputStream.read(); readBytes >= 0; readBytes = inputStream.read())
outputStream.write(readBytes);
 
// Convert the contents of the output stream into a byte array
byte[] byteData = outputStream.toByteArray();
 
// Close the streams
inputStream.close();
outputStream.close();
 
return byteData;
}

The method above can be used, for example, with multipart messages. In the following, a MessagePart object is constructed from a byte array which represents raw data from a JPEG image:

import javax.wireless.messaging.MessagePart;
import javax.wireless.messaging.SizeExceededException;
 
// ...
 
/**
* Constructs a MessagePart which can be added to a MultipartMessage.
* @return the constructed MessagePart
* @throws javax.wireless.messaging.SizeExceededException if the contents
* is larger than the available memory or supported size for the message
* part
* @throws java.io.IOException if the byte data cannot be obtained
*/

private MessagePart createMsgPart() throws SizeExceededException,
IOException {
String imageContentID = "image01";
String imageContentLocation = "image.jpg";
String jpgMIME = "image/jpeg";
// Convert the image into a byte array and construct a message part using
// it
byte[] imageContent = obtainByteData(imageContentLocation);
MessagePart messagePart = new MessagePart(imageContent, jpgMIME,
imageContentID, imageContentLocation, null);
return messagePart;
}

Postconditions

A specified resource is converted into a byte array.

See also

228 page views in the last 30 days.
×