• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Enthuware. Why is a PrintWriter (chars) able to open a FileOutputStream? (binary)?

 
Ranch Foreman
Posts: 626
2
  • Number of slices to send:
    Optional 'thank-you' note:
I thought that FileOutputStream is for binary and PrintWriter is for characters.
So I am confused why this question (Enthuware mock test 11. enthuware.ocpjp.v17.2.1905) even compiles.
When I run it and see the file contents, it is SOH which from this ASCII table, is char = 1.


 
Saloon Keeper
Posts: 15608
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Why wouldn't it compile? PrintWriter has a write() method that has an int parameter, and you passed it an int.

Maybe your question is: why does PrintWriter have a write() method that has an int parameter?

I'm guessing the designers chose int because it allows you to pass an int expression without having to cast it to char first. An example:
Instead of

Or maybe you are confused and think that SOH is not textual data. It is though. It's a control character.
 
Saloon Keeper
Posts: 27851
196
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Because binary is Lowest Common Denominator. Characters can be mapped onto binary (bytes) using the appropriate code page, but the reverse is not always true. In fact, not every character in every codepage can be mapped to another codepage. It's easy to map the Unicode character for a Hieroglyphic character such as \u13153) to a binary array or stream, but completely impossible to map that same character to a simple ASCII codepage.
 
Ranch Hand
Posts: 55
1
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Take a look at The Java™ Tutorials Lesson: Basic I/O

Character Streams that Use Byte Streams wrote:Character streams are often "wrappers" for byte streams. The character stream uses the byte stream to perform the physical I/O, while the character stream handles translation between characters and bytes. FileReader, for example, uses FileInputStream, while FileWriter uses FileOutputStream.


From The JavaDocs

java.io.PrintWriter wrote:public PrintWriter(OutputStream out)
Creates a new PrintWriter, without automatic line flushing, from an existing OutputStream. This convenience constructor creates the necessary intermediate OutputStreamWriter, which will convert characters into bytes using the default character encoding.

 
Anil Philip
Ranch Foreman
Posts: 626
2
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:Why wouldn't it compile?



from Boyarsky page 814

One common area where the exam likes to play tricks on you is mixing and matching I/O stream classes that are not compatible with each other. For example, take a look at each of the following examples and see whether you can determine why they do not compile:
...
new BufferedWriter(new FileOutputStream("z.txt")); // DOES NOT COMPILE
...
The first two examples do not compile because they mix Reader/Writer classes with InputStream/OutputStream classes, respectively.



In fact, trying to compile it gives error

java: incompatible types: java.io.FileOutputStream cannot be converted to java.io.Writer



I realize now that the reason it would not compile is, there should have been a PrintWriter in between.



Was this an incorrect reason in the textbook?

 
Anil Philip
Ranch Foreman
Posts: 626
2
  • Number of slices to send:
    Optional 'thank-you' note:

Ira Go wrote:Take a look at  


Thanks. Please see my reply to Stefan.
 
Master Rancher
Posts: 4905
74
  • Number of slices to send:
    Optional 'thank-you' note:

Anil Philip wrote:from Boyarsky page 814

The first two examples do not compile because they mix Reader/Writer classes with InputStream/OutputStream classes, respectively.


[...]

Was this an incorrect reason in the textbook?


It's a bit misleading.  In general, most Reader/Writer classes and InputStream/OutputStream classes do not connect to each other directly.  In the past, only InputStreamReader and OutputStreamWriter were the exceptions.  Nowadays PrintWriter also has a variety of constructors that allow direct connections, too.  But in general, most IO classes do not.  So a more precise reason would be "The first two examples do not compile because they require specific constructors that do not exist."  Or "The first two examples do not compile [b]because they mix Reader/Writer classes with InputStream/OutputStream classes, without using one of the classes that bridge these worlds.  But their shortened explanation is still generally valid.

Classes that bridge these worlds include InputStreamReader, OutputStreamWriter, PrintWriter, Scanner, and probably others.

Note that once you're using PrintWriter, you don't need to provide a FileOutputStream or BufferedWriter, either.  Those are provided for free if you use the appropriate constructor:

In the old days, anytime you used I/O stream you had to chain together two, three, or more different streams to do anything.  Nowadays, you often need just one class, if it's a PrintWriter or Scanner or something from the Files class.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |