2016-10-26 5 views
-2

У меня есть требование, в котором мне нужно прочитать файл класса java в виде строки в java.Как читать файл класса java в виде строки java?

мой код

String path = "C:/java/MainClass.class"; 
String content = new String(Files.readAllBytes(Paths.get(path))); 

Когда я когда-либо распечатать содержимое переменной, я ожидаю код, чтобы работать, как это работает для простого текстового файла, мой ожидаемый результат что-то вроде этого

общественности class MainClass {public static void main (String [] args) { System.out.print («Это тестовый файл»); }}

В будущем я также хочу, чтобы читать файлы в других форматах как строка для Ex: .cs, .py, .config

Пожалуйста, дайте мне знать, какие изменения мне нужно заботиться так что я прочитал его как простой текстовый файл.

+1

Java-классы, компилируемые в byteCode - байты необязательно могут быть преобразованы в строки –

+1

'.class' файлы скомпилированный код. Возможно, вам захочется перейти на чтение файлов '.java' вместо – kjsebastian

+0

. Ваше ожидание неверно. Файл «.class» не содержит исходный код java. Вы можете видеть это, открывая один с помощью простого текстового редактора. Вне этого вы должны иметь возможность читать его как строку, как любой другой текстовый файл. – Fildor

ответ

4

Пожалуйста, дайте мне знать, какие изменения мне необходимо позаботиться, чтобы я прочитал его как простой текстовый файл.

То, что вы пытаетесь сделать, невозможно. Файл «.class» содержит байт-коды, а не исходный код, а байт-коды не могут быть возвращены в исходный исходный код Java.

Лучшее, что вы можете сделать, это использовать декомпилятор. Но будьте осторожны:

  • декомпилятор не даст вам исходный код обратно, и
  • во многих случаях декомпилятор даст вам материал, который является нечитаемым или uncompilable код Java.

Другой альтернативой было бы использовать дизассемблер, чтобы получить код в формате, таком как вывод команды javap.


С другой стороны, если вы просто хотите, чтобы прочитать файл «.java» в Java, ваш код будет делать только штрафом. Единственной морщиной может быть кодировка символов, используемая в файле исходного кода, но большинство исходных кодов Java закодировано в ASCII ...

+0

Помимо своего неправильного предположения о содержимом файла .class, вопрос о содержании файла содержимого как строки все еще возможен. (Я сделал ** не ** downvote) – Fildor

+0

Я не согласен. Он спросил, может ли файл .class быть прочитан как «простой текстовый файл». Подразумевается, что он был бы читабельным человеком. Независимо от того, какую кодировку символов вы выбрали, файл класса не может быть декодирован как простой текст. –

+0

Спасибо @StephenC, Fildor – vjnan369