hi想知道是否有一种通过Java从文本文件执行代码行的方法。
例如,假设我有一个文本文件,在该文本文件中包含一个expression
int a = 1;
int b = 2;
int c;
c = a + b;
所以在我的主类中,我有一个文件对象,并且可以尝试/捕获
File file = new File("test.txt");
try {
//code here
}catch (FileNotFoundException e) {
System.err.format("File does not exist n");
}
我的目标是从test.txt运行代码并输出答案。我应该如何处理?
首先是 @d.b。评论:
您可以尝试使用JavAcompiler工具,但是,它需要JDK,因此,如果您将其上交以获得额外的信用,请确保您的讲师将使用JDK而不是JRE
运行它。
可以在运行程序时汇编时。它会像:
- 阅读文件。
- 撰写有效的Java应用程序。
- 编译它。
- 并开始在新线程上运行。
现在,基本上,您无法在文件上编写Java标准版表达式并加载以在运行时间执行。这是因为所有Java语句必须被解析并翻译成Java字节码,并且只能在程序开始运行之前完成。除了您构建另一个Java应用程序的情况外,将其编译并将其运行为新的应用程序调用,由您或某些Java系统调用。
Java虚拟机可以运行的唯一的是Java字节码。因此,您的文本文件未翻译成其,然后无法运行。虽然,这对于语言不正确,因为Python和JavaScript不需要将其翻译成机器语言,作为Java虚拟机的字节码和x86或x64处理器架构作为C 的语言的字节码。
您的解决方案是将解释的语言用作python和javaScript,而不是用作Java或C 的编译语言。正如@that的另一个人所指出的那样,如果您有兴趣学习它,则有脚本语言beanshell,它是一种类似Java的脚本语言。
参考:
- https://en.wikipedia.org/wiki/interpreted_language
- https://en.wikipedia.org/wiki/compiled_language
- https://en.wikipedia.org/wiki/scripting_language
我的目标是从test.txt运行代码并输出答案。我应该如何处理?
在Java中,要实现此目标,您可以使用自己的语法规则来解析文件。并由@Vince Emigh
说明您需要某种形式的解析和语义分析来做到这一点。您是在问我们如何撰写口译员,并且看到您甚至没有发布尝试或指定实施此问题的特定问题,这是FAAAR太广泛的
以您的示例,就像:
text.txt
1
2
+
您的 Java源代码文件:
File file = new File("test.txt");
try
{
BufferedReader br = new BufferedReader( new FileReader( file ) )
int numbers[] = new int[10];
String line;
while( ( line = br.readLine() ) != null )
{
if( line.contains( "+" ) )
{
... do stuff
}
}
}
catch( FileNotFoundException e )
{
System.err.format("File does not exist n");
}
finally
{
if( reader !=null )
{
reader.close();
}
}
参考:
- 如何使用java读取大型文本文件?
- https://docs.oracle.com/javase/7/docs/api/java/io/filereader.html
- https://docs.oracle.com/javase/7/docs/api/java/io/file.html
- Java中是否有Eval()函数?