文章目录
- 标准输入输出流
- System.in
- System.out
- 打印流
- 数据流
标准输入输出流
System.in
System.in
:标准的输入流,默认从键盘输入。
eg: 从键盘输入字符串,要求将读取到的整行字符串转成大写输出然后继续进行输入操作,直至当输入“e” 或者“exit”时,退出程序。
- 方法一:使用Scanner实现,调用next()返回一个字符串。
- 方法二:使用System.in实现。system.in返回值是一个字节流,然后通过转换流转成字符流,在使用缓冲流BufferedReader 中的 readLine()方法,从控制台读取一行数据。
方法二示例代码:
public static void main(String[] args) {
BufferedReader bufferedReader = null;
try {
System.out.println("请输入字符串:");
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
bufferedReader = new BufferedReader(inputStreamReader);
String data;
while(true){
data = bufferedReader.readLine();
if("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)){
System.out.println("程序结束");
break;
}
String upper = data.toUpperCase();
System.out.println(upper);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bufferedReader != null) bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行结果:
注:如果使用idea的话不要用单元测试,使用main方法,不然的话不能从键盘读值。
System.out
System.out
:标准的输出流,默认从控制台输出。
返回的是一个PrintStream的打印流,详情请往下看
打印流
打印流:PrintStream
和 PrintWriter
提供了一系列重载的print()
和 println()
示例代码:
@Test
public void test(){
PrintStream ps = null;
try {
FileOutputStream fileOutputStream = new FileOutputStream(new File("hello.txt"));
//创建打印输出流, 设置自动刷新模式(写入换行或者字节‘\n’时都会刷新缓存区)
ps = new PrintStream(fileOutputStream, true);
if(ps != null){//把标准的输出流(控制台输出),改成文件输出
System.setOut(ps);
}
for(int i = 0; i <= 255; ++i){//输出ASCII字符
System.out.print((char) i);
if(i % 50 == 0){//每50个数据换一行
System.out.println();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
ps.close();
}
}
数据流
数据流包括:DateInputStream
和 DateOutputStream
使用数据流可以更方便的操作Java语言的基本数据类型和String的数据。
作用:用于读取或者写入基本数据类型的变量或者字符串。
将内存中的字符串,基本数据类型变量写出到文件。
@Test
public void test2(){
DataOutputStream dataOutputStream = null;
try {
dataOutputStream = new DataOutputStream(new FileOutputStream("hello.txt"));
dataOutputStream.writeUTF("旺财");
dataOutputStream.flush();//手动的刷新一下,将内存中已有的数据写入文件。
dataOutputStream.writeInt(3);
dataOutputStream.flush();
dataOutputStream.writeBoolean(true);
dataOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(dataOutputStream != null) dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
将文件中存储的基本数据类型变量和字符串读取到内存中
注:读取的顺序不能乱来,要按照写入的顺序和类型来。
@Test
public void test3(){
DataInputStream dataInputStream = null;
try {
dataInputStream = new DataInputStream(new FileInputStream("hello.txt"));
//读取的顺序不能乱来,要按照写入的顺序和类型来。
System.out.println(dataInputStream.readUTF());
System.out.println(dataInputStream.readInt());
System.out.println(dataInputStream.readBoolean());
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(dataInputStream != null) dataInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果演示: