转换流:
转换流是字符流于字节流的桥梁,方便了字符流跟字节流之间的操作,字符流比字节流更高效。
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
标准输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。类型是PrintStream是OutputStream的子类。
System.err
标准错误输出流。此流已打开并准备接受输出数据。类型跟Out一样是PrintStream是OutputStream的子类。
System类还提供了几个能让你重定向标准输入,标准输出和标准错误的静态方法:
setIn(InputStream)
setOut(PrintStream)
setErr(PrintStream)
如果程序在短时间内输出了大量的信息,使得翻屏的速度非常快,以致于你都没法读了,这时对输出进行重定向就会显得非常有用了。对于那些要重复测试用户输入的命令行程序来说,对输入进行重定向也是非常重要的。
因为标准输入输出流操作的都是文本数据并且是字节流,我们可以将其转换为字符流操作,是程序更高效操作更方便。
例:
1,明确源和目的(是为了明确使用输入流还是输出流)
如果处理的是纯文本,并涉及到编码转换,要使用转换流。还要考虑是否需要使用缓冲流。
import java.io.FilenameFilter;
public class TestFile {
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();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
}