Java 如何打印我正在使用FileReader类编写的程序

Java 如何打印我正在使用FileReader类编写的程序,java,Java,我想用文件阅读器在控制台上打印当前程序(正在运行的程序)的源代码?怎么做? i、 e使用java.io.FileReader类我看到的唯一方法是让您的FileReader对象从您的工作区打开.java文件,循环并打印每一行 编辑:添加粗略轮廓 package test; import java.io.BufferedReader; import java.io.FileReader; public class Test { public void printMe() {

我想用文件阅读器在控制台上打印当前程序(正在运行的程序)的源代码?怎么做?
i、 e使用java.io.FileReader类

我看到的唯一方法是让您的
FileReader
对象从您的工作区打开.java文件,循环并打印每一行

编辑:添加粗略轮廓

package test;

import java.io.BufferedReader;
import java.io.FileReader;

public class Test {
    public void printMe() {
        try {
            String classname = Test.class.toString();
            // This gets the full class name, including package
            classname=  classname.replace("class ", "");
            classname= classname.replace(".", "/");
            BufferedReader br = new BufferedReader(new FileReader(<path_to_workspace/project_name/source_folder> + classname + ".java"));

        String line = br.readLine();
        while(line != null) {
            System.out.println(line);
            line=br.readLine();
        }

        } catch (Exception e) {
            e.printStackTrace();
        }       
    }
}
封装测试;
导入java.io.BufferedReader;
导入java.io.FileReader;
公开课考试{
public void printMe(){
试一试{
字符串classname=Test.class.toString();
//这将获取完整的类名,包括包
classname=classname.replace(“类”,“类”);
classname=classname.replace(“.”,“/”);
BufferedReader br=新的BufferedReader(新的文件读取器(+classname+“.java”);
String line=br.readLine();
while(行!=null){
系统输出打印项次(行);
line=br.readLine();
}
}捕获(例外e){
e、 printStackTrace();
}       
}
}

请记住,这只适用于工作区。您不能在jar中打印已编译java类的源代码,因为源代码已编译,因此不可读。

如何给出当前文件的路径您可以详细解释吗?我将在我的回答中给出一个粗略的提纲。您是否正在尝试编写一个?更多地介绍以下主题:您的问题是不读取文件,但是确定哪个源文件与当前执行的编译类文件相对应,对吗?如果是,您可能想在问题中澄清这一点。您是否在同一台计算机上有.java和.class文件?如果是:您知道工作区的路径吗?