file output in java : Notepad gives weird results

A

ankur

I used the following code to write output to a file.
FileOutputStream fout = new FileOutputStream(fname,true);
PrintStream ps = new PrintStream(fout);
Random r = new Random(10);
for(int i = 0 ; i <= r1-1; i++)
{
for (int j = 0 ; j <= c1-1; j++)
{
m1[j] = r.nextInt(10);
//System.out.println(m1[j]);
ps.print(m1[j]);
ps.printf("\n");
}

//ps.printf("\r");
}
ps.close();
fout.close();
}


with this code if I read the output file in notepad I get all junk
characters written out. Like this:

ਲ਼ਰਲ਼ਰਸ਼ਸ਼

But if I open this file in textpad the output is fine:

3
0
3
0
6
6

However if I uncomment
//ps.printf("\r");

Output in notepad is surprising. There are no new lines: 303066

But textpad is fine !


Don't understand what is happening !?
 
A

Arne Vajhøj

ankur said:
I used the following code to write output to a file.
FileOutputStream fout = new FileOutputStream(fname,true);
PrintStream ps = new PrintStream(fout);
Random r = new Random(10);
for(int i = 0 ; i <= r1-1; i++)
{
for (int j = 0 ; j <= c1-1; j++)
{
m1[j] = r.nextInt(10);
//System.out.println(m1[j]);
ps.print(m1[j]);
ps.printf("\n");
}

//ps.printf("\r");
}
ps.close();
fout.close();
}


with this code if I read the output file in notepad I get all junk
characters written out. Like this:

ਲ਼ਰਲ਼ਰਸ਼ਸ਼

But if I open this file in textpad the output is fine:

3
0
3
0
6
6

However if I uncomment
//ps.printf("\r");

Output in notepad is surprising. There are no new lines: 303066

But textpad is fine !


Apparently TextPad considers \n a line break while NotePad only
considers \r\n a line break.

That explains the last phenomenon.

The first could be due to UTF-8 versus ISO-8859-1 issues.

You could try explicit specifying character set.

Arne
 
W

Wayne

ankur said:
I used the following code to write output to a file.
FileOutputStream fout = new FileOutputStream(fname,true);
PrintStream ps = new PrintStream(fout);
Random r = new Random(10);
for(int i = 0 ; i <= r1-1; i++)
{
for (int j = 0 ; j <= c1-1; j++)
{
m1[j] = r.nextInt(10);
//System.out.println(m1[j]);
ps.print(m1[j]);
ps.printf("\n");
}

//ps.printf("\r");
}
ps.close();
fout.close();
}


with this code if I read the output file in notepad I get all junk
characters written out. Like this:

ਲ਼ਰਲ਼ਰਸ਼ਸ਼

But if I open this file in textpad the output is fine:

3
0
3
0
6
6

However if I uncomment
//ps.printf("\r");

Output in notepad is surprising. There are no new lines: 303066

But textpad is fine !


Don't understand what is happening !?


You need to use a Writer class to translate the output to text
your system understands. It is possible Textpad has some
auto-detection feature for the file's encoding and is
converting it automatically.

-Wayne
 
P

Patricia Shanahan

Arne said:
ankur said:
I used the following code to write output to a file.
FileOutputStream fout = new FileOutputStream(fname,true);
PrintStream ps = new PrintStream(fout);
Random r = new Random(10);
for(int i = 0 ; i <= r1-1; i++)
{
for (int j = 0 ; j <= c1-1; j++)
{
m1[j] = r.nextInt(10);
//System.out.println(m1[j]);
ps.print(m1[j]);
ps.printf("\n");
}

//ps.printf("\r");
}
ps.close();
fout.close();
}


with this code if I read the output file in notepad I get all junk
characters written out. Like this:

ਲ਼ਰਲ਼ਰਸ਼ਸ਼

But if I open this file in textpad the output is fine:

3
0
3
0
6
6

However if I uncomment
//ps.printf("\r");

Output in notepad is surprising. There are no new lines: 303066

But textpad is fine !


Apparently TextPad considers \n a line break while NotePad only
considers \r\n a line break.

....

Maybe NotePad is interpreting a \r followed by another character other
than \n as a weird character?

Note that the line termination problem can be fixed very easily by
replacing 'ps.printf("\r");' with 'ps.printf("%n");'.

Patricia
 
J

JussiJ

Apparently TextPad considers \n a line break while NotePad
only considers \r\n a line break.

That explains the last phenomenon.

What is happening is Windows defines the end of line as \r\n,
where as Unix defines the end of line as a single \n.

TextPad is detecting and reading the file as a Unix text file
where as Notpad only understands Windows so it displays it as
a single line because the line does not contain a Windows end
of line marker.

Jussi Jumppanen
Author: Zeus for Windows IDE
http://www.zeusedit.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top