-
要在命令行输入/输出时采用标准输入输出流。system in,system out;
-
读入写出文件用FileReader\FileWriter
-
转换流:把标准输入\出流转换成一种字符输入\出流
- InputStreamReader
- OutputStreamWriter
-
读取指定目录下的文件并输出到命令行
package bull1712.IOstream;
/*
* 读取指定目录下的文件并输出到命令行
*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class IOstreamDemo1 {
public static void main(String[] args) throws IOException {
//需要将字符串转换为字节数组
method1();
//由于标准输出流是一个字节输出流(后缀是Stream),只能输出字节或字节数组,当我们读取的是字符串时,还需要转换成字节数组;
//所以要想通过标准输出流输出字符串,要把标准输出流转换成一种字符输出流(后缀是Reader/Writer),即OutoutStreamWriter;
//采用OutputStreamWriter创建输出流对象,省去getBytes()转换步骤
method2();
//采用BufferedWriter和OutputStreamWriter结合方式,省的自定义"\r\n"换行符
method3();
}
private static void method3() throws FileNotFoundException, IOException {
//创建输入流对象,BufferedReader是一个包装流。
BufferedReader br = new BufferedReader(new FileReader("IODemo2.txt"));
//创建输出流对象
//方式一:可以先创建OutputStreamWriter对象再创建BufferedWriter对象
//Writer w = new OutputStreamWriter(System.out);
//BufferedWriter bw = new BufferedWriter(w);
//方式二:可以直接采用匿名对象方式
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line;
while((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
//释放资源
br.close();
bw.close();
}
private static void method2() throws FileNotFoundException, IOException {
//创建缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("IODemo2.txt"));
//创建输出流对象
Writer w = new OutputStreamWriter(System.out);
String line;
while((line = br.readLine()) != null) {
w.write(line);
w.write("\r\n");
}
//释放资源
br.close();
w.close();
}
private static void method1() throws FileNotFoundException, IOException {
//创建缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("IODemo2.txt"));
//创建输出流对象
OutputStream os = System.out;
String line;
while((line = br.readLine()) != null) {
//getBytes():将字符串转换为字节数组
os.write(line.getBytes());
//换行
os.write("\r\n".getBytes());
}
//释放资源
br.close();
os.close();
}
}
- 读取键盘录入数据并存储到指定文件下
package bull1712.IOstream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
/*
* 读取键盘录入数据并存储到指定文件下
*
* 转换流:InputStreamReader
* 将字节输入流转换为字符输入流
*/
public class IOStreamDemo2 {
public static void main(String[] args) throws IOException {
method1();
//采用InputStreamReader,将字节输入流转换为字符输入流
method2();
}
private static void method2() throws IOException {
//创建输入流对象
//InputStream is = System.in;
Reader r = new InputStreamReader(System.in);
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
char[] chs = new char[1024];
int len;
while((len = r.read(chs)) != -1) {
fw.write(chs, 0, len);
fw.flush();
}
//释放资源
fw.close();
r.close();
}
private static void method1() throws IOException {
//创建输入流对象
InputStream is = System.in;
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
byte[] by = new byte[1024];
int len;
while((len = is.read(by)) != -1) {
//new String();将字节数组转换为字符串.注意(by,0,len)的格式
fw.write(new String(by,0,len));
fw.flush();
}
//释放资源
fw.close();
is.close();
}
}