AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

n troubles

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java Help
View previous topic :: View next topic  
Author Message
gajo
Guest





PostPosted: Thu Jun 24, 2004 9:28 pm    Post subject: n troubles Reply with quote



OK, again I have troubles dealing with String. I have a field of the type
String which contains some text that is separated into lines at random
places, or in other words, the text contains nr (or n in the case of
linux). I write this field into a file and there it looks ok, but when I
read it back I get the whole string in one line. So I figured I'd add a
separator at the end of each line. However, then I get an empty line after
each line! I'm using GZIP to pack the data, so perhaps that is causing this?
Btw. after each block of text I write an end-of-block string to know that
it's the end of that block.
Here's the explanation in code:

String notes = ""; // the result
String lin = ""; // used to read one line from the file
final String eob = "---$#-||-"; // end of block
lin = filein.readLine(); // I'm reading the 1st line

while (lin.compareTo(eob) != 0) {
notes += lin + System.getProperty("line.separator");
lin = filein.readLine();
if (lin == null) { break; } // this will never occur, but just in case
}
return notes;

//-------------
// filein is a BufferedReader
// I can't change that, don't ask why, and
// because of that this is how I read a file
filein = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(
new GZIPInputStream(
new FileInputStream("testFile.gz"))))));

I figured I could erase one empty line after the reading-in is done, but I'm
not sure if this will happen in every case, on every computer. I'm thinking
it could be an anomaly for Windows files.
Anyway, I'm waiting for some suggestions ;)

Gajo


Back to top
Jim Sculley
Guest





PostPosted: Thu Jun 24, 2004 11:09 pm    Post subject: Re: n troubles Reply with quote



gajo wrote:
Quote:
OK, again I have troubles dealing with String. I have a field of the type
String which contains some text that is separated into lines at random
places, or in other words, the text contains nr (or n in the case of
linux). I write this field into a file and there it looks ok, but when I
read it back I get the whole string in one line.

How do you know the String is 'in one line'?

Quote:
So I figured I'd add a
separator at the end of each line. However, then I get an empty line after
each line!

I'm using GZIP to pack the data, so perhaps that is causing this?

Erm, how do you know the data in the file 'looks ok' if it has been
compressed? zcat I suppose?

Quote:
Btw. after each block of text I write an end-of-block string to know that
it's the end of that block.
Here's the explanation in code:

String notes = ""; // the result
String lin = ""; // used to read one line from the file
final String eob = "---$#-||-"; // end of block
lin = filein.readLine(); // I'm reading the 1st line

The usual idiom for this is:

String nextLine = null;
while ((nextLine = filein.readLine()) != null) {
//do stuff with nextLine
}

Since you are looking for a particular end of block String, you would
modify it to:

String nextLine = null;
while (!(nextLine = filein.readLine()).equals(eob) {
//do stuff with nextLine
}
Quote:

while (lin.compareTo(eob) != 0) {
notes += lin + System.getProperty("line.separator");
lin = filein.readLine();
if (lin == null) { break; } // this will never occur, but just in case
}
return notes;

Just what are you doing with 'notes' after this point? Wouldn't it be
far better to store your Strings in a Collection of some sort instead of
concatenating them all together? Clearly you don't *want* them to be
all one String, but the code above *makes* them all one String.

Whatever code you are using to write the data to the File is appending
the newline character for you, which is why you get extra empty lines
between your text.

Here's some code that writes an array of Strings to a GZipped file, one
String per line:

====================

File testFile = new File("/home/jim/test.txt.gz");
//sample data
String[] data = new String[] {
"One",
"Two",
"Three",
};
//write the GZIPed file
FileOutputStream fos = new FileOutputStream(testFile);
GZIPOutputStream gzos = new GZIPOutputStream(fos);
PrintWriter pw = new PrintWriter(gzos, true);
for (int i = 0; i < data.length; i++) {
pw.println(data[i]);
}
pw.close();
gzos.close();
fos.close();

======================

Here's the code that reads it back, one line at a time and stores them
in an ArrayList:

======================
//read the file
FileInputStream fis = new FileInputStream(testFile);
GZIPInputStream gzis = new GZIPInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(gzis));
String nextLine = null;
ArrayList al = new ArrayList();
while ((nextLine = br.readLine()) != null) {
//store each line in a Collection
al.add(nextLine);
}
//print the contents of the Collection
for (Iterator i = al.iterator(); i.hasNext()Wink {
System.out.println(i.next());
}


Jim S.
--
Remove my extraneous mandibular appendages to reply via email.

Back to top
ak
Guest





PostPosted: Sat Jun 26, 2004 1:43 am    Post subject: Re: n troubles Reply with quote



Quote:
String line = "this isna multi-linentext";

Contents of testFile.gz (after being extracted by WinZip):
this is
a multi-line
text

When I read it back, and write
System.out.println(line); I get:
this is a multi-line text

When I add separators at the end of each line, I get
this is

a multi-line

text


please post complete compilable example.

--
http://uio.dev.java.net Unified I/O for Java
http://reader.imagero.com Java image reader



Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java Help All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.