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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李月 中级黑马   /  2012-5-7 15:47  /  1609 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void reader_2()throws FileNotFoundException, IOException {
                FileReader file=new FileReader("E:/java/day05.java");
               
                Byte[] by=new Byte[1024];//这里为什么报错啊!
                int len=0;
                while((len=file.read(by))!=-1)
                {
                        System.out.println(new String(by,0,len));
                }
                file.close();
               
        }

7 个回复

正序浏览
兄弟,给你提醒一下,这是个Java文件,所以对于文件,应该用字节流,
想用字符流进行操作必须将字节流转换为字节流,这句话应该为
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(("E:/java/day05.java")));这是比老师推荐的写法

public static void reader_2()throws FileNotFoundException, IOException {
                 FileReader file=new FileReader("E:/java/day05.java");////////兄弟,给你提醒一下,这是个Java文件,所以对于文件,应该用字节流,
//////////////////想用字符流进行操作必须将字节流转换为字节流,这句话应该为
/////BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(("E:/java/day05.java")));
                Byte[] by=new Byte[1024];//这里为什么报错啊!
                 int len=0;
                 while((len=file.read(by))!=-1)
                 {
                         System.out.println(new String(by,0,len));
                 }
                 file.close();
               
        }
回复 使用道具 举报
楼主,不好意思。纠正下我自己的错误,Byte[]也是可以定义数组的。
你的程序错的地方只有两个。
public static void reader_2()throws FileNotFoundException, IOException {
                FileReader file=new FileReader("E:/java/day05.java");
               
                Byte[] by=new Byte[1024];
           int len=0;
                while((len=file.read(by))!=-1)
                {
                        System.out.println(new String(by,0,len));
                }
                file.close();
               
        }
回复 使用道具 举报
FileReader 的read 方法 只有两种 read() ;read(char [] cbuf,int off,int len )

read
public int read(char[] cbuf,
                int off,
                int len)
         throws IOException将字符读入数组的某一部分。

指定者:
类 Reader 中的 read
参数:
cbuf - 目标缓冲区
off - 开始存储字符处的偏移量
len - 要读取的最多字符数
返回:
读取的字符数,如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误

把Byte[] by=new Byte[1024]; 改成 char [] by =new char [1024] ;
回复 使用道具 举报
public class Test      
{
        public static void main(String[]args)throws Exception{
         FileReader file=new FileReader("E:/java/day05.java");
     
     char[] by=new char[1024];//这里是char类型的不是byte     int len=0;
     while((len=file.read(by))!=-1)
     {
             System.out.println(new String(by,0,len));
     }
     file.close();
                    

        }}
回复 使用道具 举报
("E:/java/day05.java"); 字符串写错了,应该用到转义字符
改成:("E:\\java\\day05.java");
回复 使用道具 举报
李月 发表于 2012-5-7 15:57
改了,还是有错!

学习编程必须要先学会看文档,如果你看过文档,就应该知道字符流只有read(char[])而没有read(byte[])
读取字符流不要使用byte[]要用cha[]
回复 使用道具 举报
谭景宾 发表于 2012-5-7 15:52
Byte[] by=new Byte[1024];// 大写开头的Byte是byte的封装类,不能用于定于数组
byte[] by=new byte[1024]; ...

改了,还是有错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马