First, the purpose and requirements of the experiment
Experimental purposes and requirements: Students are required to learn and understand the Java Stream programming theory on the basis of learning and understanding of the classroom learning content, learning and gradually master the programming and debugging of the stream program, to learn the correct choice of different streams according to the processing requirements of the use and combination of methods.
Experimental content: Design and write a program reads a line of string from the keyboard, writes it to a text file, and then writes another program to read the string from a text file and display it in a command-line window.
Second, the experimental code
Write file
Package Think;import Java.io.bufferedreader;import Java.io.bufferedwriter;import java.io.file;import Java.io.fileinputstream;import Java.io.filenotfoundexception;import Java.io.fileoutputstream;import Java.io.filereader;import Java.io.filewriter;import Java.io.ioexception;import Java.io.InputStreamReader;import Java.io.objectinputstream.getfield;public class Java_exp_03iostream {public static void main (string[] args) {// Character buffer stream BufferedReader br = null; BufferedWriter bw = null;try {//br=newbufferedreader (Newfilereader ("D:\\buffered.txt"));//Read byte stream from keyboard convert into character stream wrapped into buffer character stream BR = new BufferedReader (new InputStreamReader (system.in)), bw = new BufferedWriter (New FileWriter ("D:\\buffered.txt")); for (String str; (str= br.readline ())! = NULL; ) {if (Str.equalsignorecase ("E") | | Str.equalsignorecase ("Exit")) {System.out.println ("exit"); else {bw.write (str); Bw.newline ();//Line Delimiter}}} catch (IOException e) {e.printstacktrace ();//Todo:handle Exception} Finally//Close two buffered objects {try {if (br! = NULL) br.close();} catch (IOException e) {//Todo:handle exceptione.printstacktrace ();} try {if (bw! = NULL) Bw.close ();} catch (IOException e) {//Todo:handle exceptione.printstacktrace ();}}}} <span style= "Font-weight:bold;" ></span>
console input string, enter e exits and writes the string to the file.
The second program reads the contents of the file.
<span style= "FONT-SIZE:12PX;" ><strong>p</strong>ackage Think;import Java.io.bufferedreader;import Java.io.FileReader;import Java.io.ioexception;public class Java_exp_03read {public static void main (string[] args) {BufferedReader br = null;try {BR = new BufferedReader (New FileReader ("D:buffered.txt")); for (String str; (str= br.readline ())! = NULL; ) {System.out.println (str);}} catch (IOException e) {//Todo:handle exceptione.printstacktrace ();} Finally{try {if (br! = null) Br.close ();} catch (IOException e) {//Todo:handle exceptione.printstacktrace ();}}}} </span>
Iii. Summary of the experiment
IO Stream Learning Summary:
*fileinputstream
*fileoutputstream byte file input/output stream
*filereader
*filereader character file input/output stream
*buffered+* buffer Stream class belongs to the filter flow wrapper file stream commonly used
*inputstreamreader
*outputstreamreader Conversion Stream
*datainputstream
*dataoutputstream Data Flow
*printstream
*printwriter Print Flow
*objectoutputstream
*objectinputstream Object Flow
the whole idea:
* The input and output of the file can be implemented in many ways, the difference is in efficiency, the characters are coded differently, and the way they are used may be different.
problems encountered and how to resolve them:
* Problem: The first method to be adopted is fileinputstream,fileoutputstream. If it's written in English or a number, no problem. If it is in Chinese, there is a problem when I enter it from the file. Output to file no problem. Baidu + thought for a while, the result is as follows: Unicode encoding, Chinese is two bytes encoded. In the way of byte stream from the file read in, encountered Chinese characters, the Chinese split into two bytes read, so it will be garbled. When the byte stream is output to a file, the Chinese character is converted into a byte array, a byte-byte output file according to the default encoding of the platform, and Windows Notepad can automatically recognize the Chinese characters. Therefore, the text content needs to read, generally do not use byte stream.
* Optimization: After using the character stream input and output, the buffer stream is used to improve the efficiency. First, read or write to the contents of the file, first saved in the buffer array, one-time write or output, improve efficiency. I wrote the program can be very well reflected: for example, I write characters from the console to the file, enter E or exit end, and no input e and exit, when opened buffered, will find that there is no content. After the end, the content is not displayed.
* Experience:The input and output of the c,c++ file have been learned, but it is useless to write small software at ordinary times. But input and output are important.
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Njupt Java language Stream processing program design