传智播客学习总结---IO(2)

转换流:

转换流是字符流于字节流的桥梁,方便了字符流跟字节流之间的操作,字符流比字节流更高效。

InputStreamReader 字节流向字符流转换 需要和InputStream套接

OutputStreamWriter 字符流向字节流转换 需要和OutputStream套接
 例:实现功能将一个文件的内容显示在控制台上

import java.io.*;

public class Practice {
 public static void main(String[] args) {
  systemOutData("E://Workspace//IO//1.txt");
 }
 public static void systemOutData(String file){
  BufferedReader bfr = null;
  BufferedWriter bfw = null;
  try {
   bfr = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
   bfw = new BufferedWriter(new OutputStreamWriter(System.out));
   String line = null;
   while((line = bfr.readLine())!=null){
    bfw.write(line);
    bfw.newLine();
    bfw.flush();
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }finally{
   try {
    bfr.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
   try {
    bfw.close();
   } catch (IOException e) {
    e.printStackTrace();
   } 
  }
 }

标准输入输出流:

System.in
   标准输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。类型是InputStream。

System.out
   标准输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。类型PrintStreamOutputStream的子类
System.err
   标准错误输出流。此流已打开并准备接受输出数据。类型跟Out一样是PrintStreamOutputStream的子类

System类还提供了几个能让你重定向标准输入,标准输出和标准错误的静态方法:
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
如果程序在短时间内输出了大量的信息,使得翻屏的速度非常快,以致于你都没法读了,这时对输出进行重定向就会显得非常有用了。对于那些要重复测试用户输入的命令行程序来说,对输入进行重定向也是非常重要的。

因为标准输入输出流操作的都是文本数据并且是字节流,我们可以将其转换为字符流操作,是程序更高效操作更方便。

例:

l
BufferedReader bufr =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
操作流的基本规律:
1,明确源和目的(是为了明确使用输入流还是输出流)
2,明确操作的数据是否是纯文本数据。(是为了明确使用字符流还是字节流)
如果处理的是纯文本,并涉及到编码转换,要使用转换流。还要考虑是否需要使用缓冲流。
File类
File类用来讲文件或文件夹封装成对象,方便对文件和文件夹进行操作,是Java中唯一一个操作文件或文件夹的类。
常用方法示例:
import java.io.File;
import java.io.FilenameFilter;
public class TestFile {
 public static void main(String[] args) throws Exception{
  File file = new File("1.txt");
  file.canExecute(); //判断文件是否可以运行
  file.createNewFile(); //当且仅当不存在此文件时创建文件
  file.delete(); //删除文件 不走回收站
  file.deleteOnExit(); //在虚拟机退出时删除文件
  file.exists(); //判断此文件是否存在
  file.getAbsoluteFile(); //返回绝对路径名
  file.getAbsolutePath(); //返回此绝对路径名的字符串形式
  file.getName(); //返回由此抽象路径名表示的文件或目录的名称。
  file.getParent(); //返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
  file.getPath(); //将此抽象路径名转换为一个路径名字符串。
  file.isAbsolute(); //测试此抽象路径名是否为绝对路径名。
  file.isDirectory(); //测试此抽象路径名表示的文件是否是一个目录
  file.isFile();  //测试此抽象路径名表示的文件是否是一个标准文件。
  file.isHidden(); //测试此抽象路径名指定的文件是否是一个隐藏文件
  file.lastModified(); //此文件最后修改时间
  file.length(); //此文件长度
  file.list(); //返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
  file.list(new FilenameFilter(){
   public boolean accept(File dir, String name) {
    return false;
   }
  }); //返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
  file.mkdir();//创建此抽象路径名指定的目录。
  file.mkdirs();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
 }
}
l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值