IO流(IO stream):数据在外部和内存之间的流动。
程序运行过程中,使用的都是内存,处理数据都需要将数据加载到内存中处理。
输入流(Input Stream):数据从外部流入内存,即读取;
输出流(Input Stream):数据从内存流出外部,即写入。
数据来源于外部,具体有:
- 控制台,通过键盘输入
- 软件的界面上,通过键盘输入
- 文件输入,从磁盘中读取
- 网络输入
本文主要介绍与控制台及文件有关的部分操作。
1、控制台输入
在java中使用Scanner类进行控制台的输入操作。
先创建Scanner对象sc,再调用sc的一系列方法,例如nextline()、nextint()等。
运行下列程序:
import java.util.Scanner;
public class IOTest{
public static void main(String[] args){
// 控制台输入
Scanner sc = new Scanner(System.in);
// sc 的函数
System.out.println ("请输入姓名:");
String name = sc.nextLine ();
System.out.println ("请输入密码:");
String pwd = sc.nextLine ();
System.out.println ("您的账号密码是:");
System.out.println ("name:" + name + "\npwd:" + pwd);// 转义
}
}
运行结果:
请输入姓名:
admin
请输入密码:
123456
您的账号密码是:
name:admin
pwd:123456
关于Scanner类的更多用法,可以在JDK API文档中查询。
2、文件读取和写入
在java中使用FileReader类和BufferedReader类提取文件内容并返回字符串。使用FileWriter类写入文件。
package com.ly1117;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class IOTest{
public static void main(String[] args){
try {
String file1 = "";
// 将文件路径 给到 FileReader
FileReader reader = new FileReader(file1);
// buffered 缓冲 将reader 存入缓冲对象中
BufferedReader br = new BufferedReader(reader);
// 全部读取
ArrayList<String> infoList = new ArrayList<>();
while(true){
String tempStr = br.readLine ();
if(tempStr == null){
break;
}
infoList.add (tempStr);
System.out.println (tempStr);
}
for(int i = 0; i < infoList.size (); i+=2){
// 单行读取
String name = infoList.get (i);
String pwd = infoList.get (i + 1);
System.out.println ("name:" + name + "\npwd:" + pwd);
}
reader.close ();
br.close();
String file2 = "";
// 写入文件中用的
FileWriter fw = new FileWriter(file2);
} catch (FileNotFoundException e) {
throw new RuntimeException (e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}