Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java类文件作为java字符串读取?_Java_String_File_.class File - Fatal编程技术网

如何将java类文件作为java字符串读取?

如何将java类文件作为java字符串读取?,java,string,file,.class-file,Java,String,File,.class File,我有一个需求,需要在java中将java类文件作为字符串读取 我的代码是 String path = "C:/java/MainClass.class"; String content = new String(Files.readAllBytes(Paths.get(path))); 当我打印内容变量时,我希望代码能够像处理简单文本文件一样工作,我期望的输出是这样的 公共类MainClass{public static void main(字符串[]args){ System.out.pri

我有一个需求,需要在java中将java类文件作为字符串读取

我的代码是

String path = "C:/java/MainClass.class";
String content = new String(Files.readAllBytes(Paths.get(path)));
当我打印内容变量时,我希望代码能够像处理简单文本文件一样工作,我期望的输出是这样的

公共类MainClass{public static void main(字符串[]args){ System.out.print(“这是一个测试文件”);}

将来,我还希望将其他格式的文件作为字符串读取,例如:.cs、.py、.config

请让我知道我需要注意哪些更改,以便我将其作为一个简单的文本文件阅读

请让我知道我需要注意哪些更改,以便我将其作为一个简单的文本文件阅读

你想做的是不可能的。“.class”文件包含字节码而不是源代码,并且字节码不能转换回原始Java源代码

你能做的最好的事情就是使用反编译器。但要注意:

  • 反编译器不会返回原始源代码,而且
  • 在许多情况下,反编译器会给您提供不可读或不可编译的Java代码
另一种选择是使用反汇编程序,以类似于
javap
命令输出的格式获取代码



另一方面,如果您只是想在java中读取“.java”文件,那么您的代码可以很好地完成这项工作。唯一的问题可能是源代码文件中使用的字符编码,但大多数Java源代码都是用ASCII编码的

Java类编译为字节码-字节不一定可以转换为字符串
。类
文件是编译代码。您可能希望改为读取
.java
文件,而不是您的期望是错误的。“.class”文件不包含java源代码。您可以通过一个简单的文本编辑器看到打开一个。除此之外,您应该能够像其他任何纯文本文件一样将其作为字符串读入。用记事本打开
.class
文件,看看您得到了什么。这并不是你所期望的——要求是你花更多的时间研究你的需求:比如首先做一些研究来理解它们。除了他对.class文件内容的错误假设之外,问题中关于将文件内容读取为字符串的部分仍然是可能的。(我没有投反对票)我不同意。他问.class文件是否可以理解为“一个简单的文本文件”。这意味着它将是人类可读的。无论您选择何种字符编码,类文件都不能作为简单文本解码。谢谢@StephenC,FildorI同意这一点。我忽略了“人类可读”部分。我还假设他混淆了.class和.java文件,因为他一直想读入.cs、.py、.config等…可能在读后使用一些反编译器。不是100%好,但适用于较简单的情况