8.1 控制台输入输出
public static void main(String[] args) throws IOException {
String c;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符:");
do {
c = br.readLine();
System.out.println(c);
} while (c != "q");
}
运行结果:
输入字符:
runoob
runoob
run
run
q
q
8.2 IO流
8.3 字节流
8.3.1 FileInputStream
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
// 可以使用字符串类型的文件名来创建一个输入流对象来读取文件
InputStream is = new FileInputStream("E://a.txt");
// 也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象
File file = new File("E://a.txt");
InputStream in = new FileInputStream(file);
int len = 0;
while ((len = fis.read()) != -1){
System.out.println(len); // 228 189 160 229 165 189
}
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1){
System.out.println(new String(bytes,0,len)); // 你好...
}
fis.close();
8.3.2 FileOutputStream
该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
// 使用字符串类型的文件名来创建一个输出流对象
OutputStream os = new FileOutputStream("E://b.txt");
// 使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象
File file = new File("E://a.txt");
OutputStream os = new FileOutputStream(file);
os.write(97); // a
byte[] bytes = {65,66,67,68,69};
os.write(bytes); // ABCDE
os.write("你好".getBytes()); // 你好
os.close();
8.4 字符流
8.3.1 FileReader
FileReader fr = new FileReader("E://a.txt");
char[] chars = new char[1024];
int len = 0;
while ((len = fr.read(chars)) != -1){
System.out.println(new String(chars,0,len)); // 你好...
}
fr.close();
8.3.2 FileWriter
FileWriter fw = new FileWriter("E://a.txt");
FileWriter fw = new FileWriter("E://a.txt",true); // 续写开关 true:不会创建新的文件覆盖源文件,可以续写
char[] chars = {'a','b','c','d'};
fw.write(chars); // abcd
fw.write("你好"); // abcd你好
fw.flush();
fw.close();
8.3 缓冲流
// 写入文件
BufferedWriter out = new BufferedWriter(new FileWriter("E://runoob.txt"));
out.write("菜鸟教程");
out.close();
// 读取文件
BufferedReader br = new BufferedReader(new FileReader("E://runoob.txt"));
String str;
while ((str = br.readLine()) != null){
System.out.println(str); // 菜鸟教程
}