Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.help > #2383

Re: FileOutputStream questions

From Knute Johnson <nospam@knutejohnson.com>
Newsgroups comp.lang.java.help
Subject Re: FileOutputStream questions
Date 2012-12-25 11:45 -0800
Organization A noiseless patient Spider
Message-ID <kbcvoq$ijh$1@dont-email.me> (permalink)
References <p4ejd893hi08mkpjabtfn6mcbemhmuceua@4ax.com>

Show all headers | View raw


On 12/25/2012 6:36 AM, Roedy Green wrote:
> I have just realised I do not understand some basic things about
> unbuffered FileOutputStream.
>
> I used them in two ways, wrapping in a BufferedOutputStream or
> BufferedWriter, or writing an entire file in one i/o without
> buffering.
>
> If you write single bytes at a time, will you trigger physical I/O on
> every byte, or is there some small buffer in there anyway?
>
> I have experimented with flush during file write. The file size stays
> at 0 until I close, at least to DIR.
>
> What I want is to log bytes that will be largely recoverable even if
> the program terminates unexpectedly without closing. Flush does not do
> it.  Close/reopen periodically seem at bit heavy handed. Is there
> something I am missing?
>

I use a buffered output stream with the file opened in append mode to 
keep some log files.  I flush those after every write.

"If the intended destination of this stream is an abstraction provided 
by the underlying operating system, for example a file, then flushing 
the stream guarantees only that bytes previously written to the stream 
are passed to the operating system for writing; it does not guarantee 
that they are actually written to a physical device such as a disk drive."

I haven't had any problems with the above getting it to write 
immediately.  All of this has been on WinXP which I assume you probably 
are with the mention of DIR.

Under Windows, even the OS has a write buffer.  I don't know what causes 
it to commit or if a Java stream flush is passed through.  I just looked 
at the source code and OutputStream.flush() doesn't do anything.

-- 

Knute Johnson

Back to comp.lang.java.help | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

FileOutputStream questions Roedy Green <see_website@mindprod.com.invalid> - 2012-12-25 06:36 -0800
  Re: FileOutputStream questions markspace <markspace@nospam.nospam> - 2012-12-25 07:54 -0800
    Re: FileOutputStream questions Roedy Green <see_website@mindprod.com.invalid> - 2012-12-26 01:30 -0800
  Re: FileOutputStream questions Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2012-12-25 18:32 +0200
  Re: FileOutputStream questions Knute Johnson <nospam@knutejohnson.com> - 2012-12-25 11:45 -0800
    Re: FileOutputStream questions Roedy Green <see_website@mindprod.com.invalid> - 2012-12-26 01:32 -0800
      Re: FileOutputStream questions Knute Johnson <nospam@knutejohnson.com> - 2012-12-26 09:19 -0800
  Re: FileOutputStream questions Roedy Green <see_website@mindprod.com.invalid> - 2012-12-25 13:17 -0800
    Re: FileOutputStream questions Knute Johnson <nospam@knutejohnson.com> - 2012-12-25 14:05 -0800
      Re: FileOutputStream questions Roedy Green <see_website@mindprod.com.invalid> - 2012-12-26 01:35 -0800
      Re: FileOutputStream questions markspace <markspace@nospam.nospam> - 2012-12-26 07:46 -0800
    Re: FileOutputStream questions Stanimir Stamenkov <s7an10@netscape.net> - 2013-01-01 02:36 +0200

csiph-web