Komut satırından argümanları alan ve daha sonra etkileşimli olması gereken küçük bir java programım var.
Büyük girişle test etmek istediğimde, bir dosyanın içeriğini programa giriş argümanları olarak kullanmak için JVM'ye yönlendirmek istiyorum ancak stdin'i dosya içeriğiyle değiştirmek istemiyorum.
Bu yüzden denedim
daha az dosya | xargs -0 java -cp ... benim paketim.ClassName
ancak bu dosya içeriğiyle stdin'in yerini alır. Sanırım BufferedReader.readLine () programını kullanan programın etkileşimli kısmı, bunun yerine dosyadan içeri alır.
Önce dosyanın içeriğini JVM'ye aktarıp sonra StdIn'e geri dönebilmemin bir yolu var mı?
Ubunthu'yu çalıştırıyorum
Kod örneği:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String cmd;
while(true) {
try {
System.out.print(">");
cmd = br.readLine(); //becomes null if I start the program as above
Ps. Java programının dosyaları ile çalışması için daha iyi olurdu, ancak bunun mümkün olup olmadığını bilmek istiyorum Ds.
java myclass "$(<some-file.txt)"
- ama bu gerçekten kötü bir hack ve Java programını değiştirerek dosya adını argüman olarak almalısınız.
java -cp … --other-argument <contents-of-a-file> --another-argument mypackage.ClassName
? Yani bu argüman için komut satırını ayrıştırabilirsiniz? Belki bize Java programınızdan minimal bir kod örneği vermelisiniz? Ne yapmak gerçekten ulaşmak gerekir - yani bu dosyada ne ve neden sadece program dosya yolunu verip bu dosyayı açalım mı?