從標準輸入流中讀取資料
package chapter10.branch01;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestStandarInput {
public static void main(String[] args) throws Exception {
new TestStandarInput().input2();
}
/**
*
* <b>方法名:</b>
* <p>input1<p>
* <b>功能描述:</b>
* <p>
* 以行的方式進行讀取的,BufferedReader對字元進
* 行了包裝, 所以打印出來的跟輸入進去的是一樣的
* 因為位元組跟字元的轉換,它的內部已經整理好了
* <p>
* @throws Exception
*/
public void input1() throws Exception {
String s=null;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
s=br.readLine();
while(s!="") {
System.out.println("你輸入的內容是:"+s);
s=br.readLine();
}
//使用完了一定要關閉它否則就會浪費資源
br.close();
}
/**
*
* <b>方法名:</b>
* <p>input2<p>
* <b>功能描述:</b>
* <p>
* 以位元組的方式去讀取內容,打印出來的時候依然是
* 按照位元組的方式打印出來
* <p>
* @throws Exception
*/
public void input2() throws Exception {
/**
* 這個地方也完全可以定義為int型別,因為char型別
* 到int型別之間的轉換是隱式的轉換,不過問題在於
* 如果寫成了int那麼打印出來的肯定就只是數字了
*/
char s;
InputStreamReader isr=new InputStreamReader(System.in);
s=(char) isr.read();
while(s!=0) {
System.out.println("你輸入的內容是:"+s);
s=(char) isr.read();
}
//使用完了一定要關閉它否則就會浪費資源
isr.close();
}
}
從控制檯獲取輸入資料寫入本地檔案
File f=new File("E:\\testio\\dada.txt");
f.createNewFile();
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(isr);
PrintWriter out=new PrintWriter(new FileWriter(f));
String s=in.readLine();
while(!s.equals("")) {
out.println(s);
s=in.readLine();
}
//用完了之後一定要關閉掉那些reader之類的東西
out.flush();
// out.close();
// in.close();
上面的寫入使用的是printWriter,使用它的好處在於可以有緩衝,
因此可以加快讀取的速度,如果它讀取的資料不夠多的話,那麼它
是不會向檔案裡面寫入的,直到它讀取了它設定的預設的大小之後
在會自動的flush一下把當前裡面的內容輸出到檔案,為了證明上面
的結論可以做一個實驗.
第一步:把上面的flush和close全部註釋掉,這樣的話,如果資料少的話
,printWriter不會把當前的內容寫入到檔案中,在程式執行的時候輸入
少量字元,比如123然後再連續回車,這樣程式結束後到指定的目錄下
去檢視檔案,會發現檔案是空的,因為資料太少了,所以程式沒來得及
輸出就結束了
第二步:同樣的操作,隨便把flush或者是close開啟,再去執行第一步
的操作,檔案裡面都是有記錄的,因為close或者flush都會使程式把
當前的內容全部輸出出去.