黑马程序员技术交流社区

标题: 代码有问题 路径问题 解决不了 [打印本页]

作者: 天涯111    时间: 2015-6-19 23:57
标题: 代码有问题 路径问题 解决不了
  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.         }
复制代码

好像路径有问题,求解
作者: 天涯111    时间: 2015-6-20 15:35
求大神帮解决!!!!!

作者: 守门员    时间: 2015-6-20 19:15
天涯111 发表于 2015-6-20 15:35
求大神帮解决!!!!!



用上面这个小方法看一下自己的默认路径就知道了,eclipse默认的应该是当前project的路径,就是X:(workspace所在路径)\workspace\project名,你代码的路径不对,要么使用绝对路径,要么使用File fi = new File(".\\src\\包名(如果多个也要分级,一切按照硬盘里面的路径)\\Text7.java")

作者: 天涯111    时间: 2015-6-21 15:30
守门员 发表于 2015-6-20 19:15
用上面这个小方法看一下自己的默认路径就知道了,eclipse默认的应该是当前project的路径,就是X:(work ...

谢谢你提供的方法,File fi = new File(".\\src\\包名(如果多个也要分级,一切按照硬盘里面的路径)\\Text7.java"),这个解决了问题 ,谢谢大神!!!
作者: 天涯111    时间: 2015-6-21 15:31
问题已解决!!!
作者: zc强盗    时间: 2015-6-21 16:08
现在看到代码就头晕!
作者: 天涯111    时间: 2015-7-17 11:26
刚开始我也是啊!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2