A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦超 中级黑马   /  2012-4-10 00:06  /  2229 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在IO流中有很多实用的类,这些类之间也有着各种关系,现在的问题就是这里面的关系弄的很混乱啊,希望帮帮忙理清一下下面几个类的关系!
File
PrintStream
PrintWriter
以上的类和字节流和字符流的关系是怎么样的?~~感谢了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

3 个回复

倒序浏览
File 类 是IO包中唯一代表磁盘文件本身的对象,File类 定义了一些与平台无关的方法来操纵文件,通过File类提供的各种方法,我们能够创建,删除文件,重命名文件,判断文件的读写权限及是否存在,设置和查询文件最近修改时间.....
PrintStream 类提供了一系列的print和println的方法.可以实现将基本数据类型的格式化字符串输出.
printwriter类:此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
  与 PrintStream 类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
  此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用 checkError() 是否出现错误。

PrintStream是字节流 OutputStream的子类
PrintWriter 是字符流Writer的子类


评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
File类是文件和目录路径名的抽象表示形式,是用来操作文件的,有可以创建删除以及判断文件或文件夹是否存在等方法

字节打印流PrintStream 为其他输出流添加了功能,其实效果和        FileOutputStream一样,
只是被装饰之后多了一点功能,多哪些功能呢?比如说可以自动刷新,自动调用 flush 方法,
而且它的构造方法也非常强大,可以接受多种类型的数据.具体的看下面,字符打印流也是这个道理
/*
,打印流:
该流提供了打印方法,可以将各种数据类型的数据都原样打印.

字节打印流:
PrintStream
构造函数可以接受的参数类型:
1,file对象
2,字符串路径.String
3,字节输出流.OutputStream


字符打印流:
PrintWriter
构造函数可以接受的参数类型:
1,file对象
2,字符串路径.String
3,字节输出流.OutputStream
4,字符输出流.Writer

*/
package printwriter;
import java.io.*;
class  PrintStreamDemo
{

        public static void main(String[] args) throws IOException
        {
                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));

                File file = new File("a.txt");

                PrintWriter out = new PrintWriter(new BufferedWriter(new PrintWriter(file)),true);

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                        out.println(line.toUpperCase());
                        //out.flush();
                }

                out.close();
                bufr.close();
        }
}

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
一些基本知识我就不说了,楼上的已经说得挺详细了,我说下把IO包中的类的关系理清的技巧吧,其实IO包中的类算是最好区分的了,看它的类名,一般都是功能+操作类型(字符或字节),譬如FileInputStream,代表操作文件的字节输入流,FileWriter,代表操作文件的字符输出流。
File类,顾名思义,是操作文件的一个类,那么里面肯定就有操作文件最常见的增删改查功能方法了,
PrintStream 和PrintWriter ,打印流,PrintWriter是PrintStream 的升级,这两个流比较特殊,不仅能打印字节,也可以打印字符,还可以在构造时就实现自动刷新,而且其方法永远不会抛出 IOException。


评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马