DataInputStream有readLine()方法,新IO中BufferedReader也有readLine()方法
StringBufferInputStream()只接收字串參數
FileInputStream()要和BufferedInputStream()一起使用,提高效率
package com.cjf.io;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.LineNumberInputStream;import java.io.PrintStream;import java.io.StringBufferInputStream;public class IOStreamDemo {private static String temp = null;/** * @param args */@SuppressWarnings("deprecation")public static void main(String[] args) {//temp = bufferedIn();//stringBuffer();//formatData();//lineNumber();//store_recover();systemIn();}/** * 使用緩衝的輸入檔案 */public static void bufferedIn(){String result = null;try {DataInputStream input = new DataInputStream(//格式化讀取輸入資料(不改變資料格式)new BufferedInputStream(//提高速度,先對檔案進行緩衝new FileInputStream("f:/tcp.txt")));//開啟檔案,資料來源result = new String();while((result = input.readLine()) != null){System.out.println(result);System.out.println("----------");}input.close();//要關閉檔案} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * Input from memory */@SuppressWarnings("deprecation")public static void stringBuffer(){StringBufferInputStream in2 = new StringBufferInputStream("abcd");int len = 0;while((len = in2.read()) != -1){//返回字元所對象的asc碼97 98 99 100System.out.print((char)len+" ");}try {in2.close();//關閉} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 格式化記憶體輸入 */public static void formatData(){try {DataInputStream in3 = new DataInputStream(new StringBufferInputStream("abcd"));//只能讀取字串,不能讀取檔案while(in3.available() != 0){//available()判斷有多少字元可以用System.out.println(in3.readByte());//列印出字元的asc碼 97 98 99 100}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 跟蹤輸入行的編號 */public static void lineNumber(){String result = null;try {LineNumberInputStream li = new LineNumberInputStream(//跟蹤輸入行的編號new BufferedInputStream(new FileInputStream("f:/tcp.txt")));DataInputStream in4 = new DataInputStream(li);//資料來源 保持原來的資料格式PrintStream out1 = new PrintStream(new BufferedOutputStream(//格式化資料/效率new FileOutputStream("f:/lineDemo.txt")));//資料去向while((result = in4.readLine()) != null){out1.println("lineNumber:" + li.getLineNumber() +":" +result);}out1.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 儲存於回複資料 */public static void store_recover(){try {DataOutputStream out2 = new DataOutputStream(//資料儲存去向new BufferedOutputStream(new FileOutputStream("f:/store_recover.txt")));out2.writeBytes("hello io , you are so easy: \n");//對應ascII,應該講字元作為位元組寫入,為了讀出方便out2.writeDouble(3.1415926);//第二行寫入out2.close();DataInputStream in5 = new DataInputStream(new BufferedInputStream(new FileInputStream("f:/store_recover.txt")));System.out.println(in5.readLine());//將字元當做普通的ascII讀回System.out.println(in5.readDouble());//上邊換行後,這裡開始讀下一行,正好是3.1415926} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 讀取輸入 * System.in需要和DataInputStream一塊用 */public static void systemIn(){try {DataInputStream in6 = new DataInputStream(new BufferedInputStream(System.in));//String s ;while((s = in6.readLine()).length() != 0){System.out.println(s);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}