File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes I/O and Streams and the fly likes UTFDataFormatException Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » I/O and Streams
Bookmark "UTFDataFormatException" Watch "UTFDataFormatException" New topic


mupparaju srinivasa rao

Joined: Apr 16, 2004
Posts: 9

There are two applications.The communication between the two application is through socket.
The code that is writing on the socket is as follows:

public boolean sendAlarmWithSize(int size_, String alarm_) throws Exception
return true;
After writing on the socket i put the print statement in writeShort method of API.It is printing the size_ correct.

At the receiving end for reading from the socket the following code is used:

private Payload readMessages(InputStream in)
throws IOException, java.text.ParseException, InvalidMessageFormat {
PropertyList prop = new PropertyList();
String propertyStr, contentType = null, action = null;
Object obj;
DataInputStream dataStream = new DataInputStream(in);
int numAlarms = dataStream.readShort();
CircuitMessage[] circuitAlarms = new CircuitMessage[numAlarms];
for (int i = 0; i < numAlarms; i++) {
propertyStr = dataStream.readUTF();
if (Logger.DEBUG && myDebug != null) {
myDebug.out(5,"Message Received - " + propertyStr);
obj = prop.objectFrom(propertyStr);
if (obj instanceof java.util.Hashtable) {
java.util.Hashtable hash = (java.util.Hashtable)obj;
contentType = (String) hash.get("<content-type>");
action = (String) hash.get("<action-type>");
obj = mssgFactory.digest(hash);
if (obj instanceof CircuitMessage) {
circuitAlarms[i] = (CircuitMessage) obj;
} else {
// skip this message because I don't recognize it.
Payload payload = new Payload();
payload.payload = circuitAlarms;
payload.contentType = contentType;
payload.action = action;
return payload;

In the above code after reading from the stream using readShort() the value is different than the one we wrote on the stream.At the same time readUTF() is throwing UTFDataformat exception. I hope some one can help me .

Thanks in advance,

Joe Ess

Joined: Oct 29, 2001
Posts: 9189

I think the problem is the same as it was six months ago. There is something fundamentally wrong with this code (pseudocode follows):

[How To Ask Questions On JavaRanch]
I agree. Here's the link:
subject: UTFDataFormatException
It's not a secret anymore!