我在目录中有一些.java文件,我想读取这些文件并在每个文件中获取一些值。我不确定如何进行。如何在节点js中使用fs模块和其他一些npm模块来做到这一点。
下面是我当前的代码
const path = require('path');
var fs = require('fs');
module.exports={
readTS: function () {
var CWD = path.join(__dirname, '../');
var folder = path.basename(CWD).toLowerCase();
var TSJavaPath = path.join(__dirname, '../src/main/java/com/'+folder+'/');
var files = fs.readdirSync(TSJavaPath).filter(fn => fn.startsWith('TS'));
console.log(files);
for(i=0;i<files;i++){
//Read and get data
}
}
};
答案 0 :(得分:0)
您可以编译.java
文件并使用leonardosnt/java-class-tools读取它们。
您有HelloWorld.java-
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
然后编译-
javac HelloWorld.java
然后写一个快速的index.js
-
const { JavaClassFileReader } = require('java-class-tools');
const reader = new JavaClassFileReader();
const classFile = reader.read('./HelloWorld.class');
classFile.methods.forEach(md => {
/**
* Method name in constant-pool.
*
* Points to a CONSTANT_Utf8_info structure: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7
*/
const nameInConstantPool = classFile.constant_pool[md.name_index];
// To string (hacky)
const name = String.fromCharCode.apply(null, nameInConstantPool.bytes);
console.log(name);
});
输出以下内容-
node index.js
<init>
main