/**
* 通过转换流实现键盘输入屏幕输出
*/
public class ConvertStream {
public static void main(String[] args) {
BufferedReader br=null;
BufferedWriter bw=null;
try{
//通过InputStreamReader转换流将System.in字节流转换为字符流
br=new BufferedReader(new InputStreamReader(System.in));
//通过OutpuStreamWriter转换流将System.out字节流转换为字符流
bw=new BufferedWriter(new OutputStreamWriter(System.out));
String temp="";
while(true){
bw.write("请输入:");
bw.flush();
String input= br.readLine();
if ("exit".equals(input)){
break;
}
bw.write("你输入的是:"+input);
bw.newLine();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if (br!=null){
br.close();
}
if (bw!=null){
bw.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
/**
* 通过字节流读取文本文件并添加行号
*/
public class LineNumber2Demo {
public static void main(String[] args) {
BufferedReader br=null;
BufferedWriter bw=null;
try{
//将字节流通过转换流转换为字符流
br=new BufferedReader(new InputStreamReader(new FileInputStream("")));
bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("")));
String temp="";
int i=1;
while((temp=br.readLine())!=null){
bw.write(i+","+temp);
bw.newLine();
i++;
}
bw.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
//判断输入流输出流是否为空,不为空关闭流
if (br!=null){
br.close();
}
if (bw!=null){
bw.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
下面这个是换了一个字符输出流 PrintWriter是节点流,不是处理流,可以直接连接对象也具有缓冲流的效果
上面代码的BufferedWriter缓冲流是处理流 需要包裹节点流才能实现缓冲流提高读写效率
/**
* 字符输出流
* java的io流中专门提供了用于字符输出流对象PrintWriter,该对象具有自动刷新缓冲字符输出流不用调用输出流对象的Flush方法了
* 而且可以通过Println()方法实现自动换行
* 通过这个也可以看出在java中io流输入输出流并没有较强的对应关系灵活性很高
*/
public class LineNumberDemo3 {
public static void main(String[] args) {
BufferedReader br=null;
PrintWriter pw=null;
try{
br=new BufferedReader(new InputStreamReader(new FileInputStream("")));
pw=new PrintWriter("");
String temp="";
int i=1;
while((temp= br.readLine())!=null){
pw.println(i+","+temp);
i++;
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
}catch(Exception e){
e.printStackTrace();
}
}
}