Difference between revisions of "Binary Data"

From mi-linux
Jump to navigationJump to search
(New page: This is a collection of hints about how to use the Scala and Java APIs to perform simple operations, of the sort you might need to use to complete the portfolio exercises. Binary data, r...)
 
m
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
...Back to [[5CS004]]
 +
 
This is a collection of hints about how to use the Scala and Java APIs to perform simple operations, of the sort you might need to use to complete the portfolio exercises.  
 
This is a collection of hints about how to use the Scala and Java APIs to perform simple operations, of the sort you might need to use to complete the portfolio exercises.  
  
Line 29: Line 31:
  
 
== How to read in a file as a String ==
 
== How to read in a file as a String ==
 +
<pre>val filedata = scala.io.Source.fromFile("file.txt").mkString("")
 +
</pre>
  
  <nowiki>
 
val filedata = scala.io.Source.fromFile("file.txt").mkString()
 
  </nowiki>
 
 
 
 
== How to read in a file as binary data ==
 
== How to read in a file as binary data ==
  
Line 54: Line 53:
 
}
 
}
 
   </nowiki>
 
   </nowiki>
 +
 +
 +
...Back to [[5CS004]]

Latest revision as of 15:04, 7 March 2011

...Back to 5CS004

This is a collection of hints about how to use the Scala and Java APIs to perform simple operations, of the sort you might need to use to complete the portfolio exercises.

Binary data, rather than strings, characters, and so on, is usually represented in Java as arrays of bytes, called byte[] in Java and Array[Byte] in Scala. Being able to convert binary data to and from Strings, sending both sorts of data down sockets is useful things to know about.


How to convert a String to an Array[Byte]

 
val mybytes = "I love Scala programming!".getBytes()
  


Sending Strings and binary data through sockets, or writing them to files

If you are using a Java DataOutputStream (as you saw in the lectures) you can send a String to a DataOutputStream like this:

 
val out = new DataOutputStream(socket.getOutputStream())
out.writeBytes("Hello socket world!")
  

and binary data like this:

 
val out = new DataOutputStream(socket.getOutputStream())
out.write(mybytearray)
  


How to read in a file as a String

val filedata = scala.io.Source.fromFile("file.txt").mkString("")

How to read in a file as binary data

The Scala API for dealing with IO is not very mature, so it's easier here to use the Java API:

 
/** Get the contents of a give file, as a byte array.
 * 
 * We use the Java classes here, a the Scala ones are a bit of a hack.
 * 
 */
def getFileContents(filename : String) : Array[Byte] = {
	val file = new File(filename)
	val fis = new FileInputStream(file)
	val flength : Int = file.length.asInstanceOf[Int]
	var bytearray = new Array[Byte](flength)
	fis.read(bytearray)
	return bytearray
}
  


...Back to 5CS004