import org.junit.Test;
import java.io.*;
import java.util.Scanner;
/*
* 其他流的使用
* 1.標準的輸入,輸出流
* 2.打印流
* 3.數據流
*
* */
public class OtherStreamTest {
/*
* 1.標準的輸入、輸出流
* 1.1
* System.in:標準輸入流,默認從鍵盤輸入
* System.out:標準輸出流,默認從控制檯輸出
*1.2
* System類的setIn(InputStream is)/setOut(PrintStream ps)方式來重新指定輸入和輸出的默認值
* */
@Test
/*
* 題目:從鍵盤輸入字符串,要求將讀到的整行字符串轉換成大寫輸出,然後繼續進行輸入的操作,
* 知道輸入“e”或者“exit”時,退出程序
* 方法一:使用scanner。調用next()返回一個字符串
* 方法二:使用System.in實現,System.in---->轉換流----->BufferReader的readLine()
* */
public void test1() throws IOException {
InputStream in = System.in;
InputStreamReader inputStreamReader = new InputStreamReader(in);//Reader
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while (true){
System.out.println("請輸入字符:");
String data=bufferedReader.readLine();
if("e".equalsIgnoreCase(data)||"exit".equalsIgnoreCase(data)){
System.out.println("程序結束!");
break;
}else{
String str=data.toUpperCase();
System.out.println(str);
}
}
}
@Test
public void test2(){
//方法二
while (true){
System.out.println("請輸入字符:");
Scanner in=new Scanner(System.in);
String str=in.nextLine();
if("e".equalsIgnoreCase(str)||"exit".equalsIgnoreCase(str)){
System.out.println("程序結束!!!");
break;
}else{
String str2=str.toUpperCase();
System.out.println(str2);
}
}
}
/*
2.打印流:printStream和printWriter
2.1:提供了一系列的重載的print()和println()
2.2練習:輸出0-255Ascll碼到文件(標準輸出流的)
System.setOut(printStream); //設置標準輸出流從控制檯改爲printStream
*/
@Test
public void test3() {
PrintStream printStream = null;
try {
File file = new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\PrintStream.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
//處理流
printStream = new PrintStream(fileOutputStream, true);
if(printStream!=null){
System.setOut(printStream); //設置標準輸出流從控制檯改爲printStream
}
for (int i = 0; i <= 255; i++) { //輸出ASCll碼值
System.out.print((char) i);
//50個換行
if(i%50==0){
System.out.println();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if(printStream!=null){
printStream.close();
}
}
}
/*
3.數據流
3.1:DataInputStream和DataOutputStream
3.2作用:用於讀取或者寫入基本數據類型的變量和字符串
練習:將內存中的字符串,基本數據類型變量寫出到文件中
注意:處理異常還應該用try-catch-finally
*/
@Test
public void test4() throws Exception {
DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\data.txt")));
dataOutputStream.writeUTF("李瀟瀟");
dataOutputStream.flush();
dataOutputStream.writeInt(21);
dataOutputStream.flush();
dataOutputStream.writeBoolean(true);
dataOutputStream.flush();
dataOutputStream.close();
}
/*
* 將寫入到文件中的基本數據類型或者String讀取到內存,輸出到控制檯
* DataInputStream-----> read
* 注意:在讀取的時候,順序必須要和存的順序一樣,否則會拋異常
* */
@Test
public void test5()throws Exception{
//1
DataInputStream dis = new DataInputStream(new FileInputStream(new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\data.txt")));
//2
String s = dis.readUTF();
int i = dis.readInt();
boolean b = dis.readBoolean();
System.out.println("name="+s+"age="+i+"isMale"+b);
//3
dis.close();
}
}
標準輸入輸出流、數據流、打印流
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.