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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.itheima;
  2. import java.io.File;
  3. import java.io.FileReader;
  4. import java.io.Reader;

  5. /*5、 自定义字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
  6. 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
  7. */
  8. public class Text5 {
  9.                 public static void main(String[] args){
  10.                         File fi = new File("Text7.java");//创建对象指向当前工程根目录的Text7.java文件
  11.                         String str = "null";//初始化文件每行的字符串
  12.                         try {
  13.                                 MyFile mf = new MyFile(new FileReader(fi));//创建MyFile类对象读取fi
  14.                                 mf.setLineNum(0);//初始化第一行为0
  15.                                 //当每行内容不为空时加入行号和冒号
  16.                                 while((str=mf.readeLine())!=null){
  17.                                         System.out.println(mf.getLineNum()+":"+str);
  18.                                 }//没有文件或打开错误抛出异常
  19.                         } catch (Exception e) {
  20.                                 e.printStackTrace();
  21.                         }
  22.                 }       
  23.         }
  24.         //创建我的文件类来读取指定的文件
  25.         class MyFile{
  26.                 //定义行号,创建Reader来读取内容
  27.                 private int lineNum;
  28.                 private Reader rd;
  29.                 //初始化构造函数
  30.                 MyFile(Reader rd) {
  31.                         this.rd = rd;
  32.                 }
  33.                 public String readeLine()throws Exception{
  34.                         lineNum++;//行数叠加读取
  35.                         StringBuilder sb = new StringBuilder();//StringBuilder容器存储每行的内容
  36.                         int x=0;
  37.                         //判断该行是否有内容并存储
  38.                         while((x=rd.read())!=-1)
  39.                         {
  40.                                 if(x=='\r')
  41.                                         continue;
  42.                                 if(x=='\n')
  43.                                         return sb.toString();
  44.                                 sb.append((char)x);
  45.                         }
  46.                         //若sb的长度不为0则返回字符串,否则返回空
  47.                         if(sb.length()!=0)
  48.                                 return sb.toString();
  49.                         return null;                       
  50.                 }
  51.                 //主函数设置和获取行号
  52.                 public int getLineNum(){
  53.                         return lineNum;
  54.                 }
  55.                 public void setLineNum(int lineNum){
  56.                         this.lineNum=lineNum;
  57.                 }                               
  58.         }
复制代码

好像路径有问题,求解

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

6 个回复

倒序浏览
求大神帮解决!!!!!
回复 使用道具 举报
天涯111 发表于 2015-6-20 15:35
求大神帮解决!!!!!



用上面这个小方法看一下自己的默认路径就知道了,eclipse默认的应该是当前project的路径,就是X:(workspace所在路径)\workspace\project名,你代码的路径不对,要么使用绝对路径,要么使用File fi = new File(".\\src\\包名(如果多个也要分级,一切按照硬盘里面的路径)\\Text7.java")
回复 使用道具 举报
守门员 发表于 2015-6-20 19:15
用上面这个小方法看一下自己的默认路径就知道了,eclipse默认的应该是当前project的路径,就是X:(work ...

谢谢你提供的方法,File fi = new File(".\\src\\包名(如果多个也要分级,一切按照硬盘里面的路径)\\Text7.java"),这个解决了问题 ,谢谢大神!!!
回复 使用道具 举报
问题已解决!!!
回复 使用道具 举报
现在看到代码就头晕!
回复 使用道具 举报
刚开始我也是啊!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马