Java - (android) onun OutputStream kızarma sonra bir işlemi yeniden kullan

oy
47

Android'de bu yapmaya çalışıyor im:

Process p = Runtime.getRuntime().exec(sh);

   DataOutputStream out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

   out = new DataOutputStream(p.getOutputStream());

   out.writeBytes(something useful\n);

   out.close();

   p.waitFor();

İkinci kez) (out.writeBytes uygulanır; Hatalı dosya numarası: Ben bir java IOException olsun. Benim app birkaç yerli programları çalıştırmak için vardır, ama her zaman aynı işlemi kullanın. Bu işe yaramazsa neden bilen var mı?

Oluştur 28/08/2010 saat 13:01
kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Aradığınızda out.close(), otomatik olarak arayacak close()sizin sürecinin ouputstream üzerinde.

Her aradığınızda p.getOutputStream()size aynı olsun OutputStreamout ikinci kullanımına, p.getOutputStream()zaten kapalı döndürür OutputStream.

Temelde koduyla, gerçekten ilk kapatmak gerekmez DataOutputStream.

Kaynaklar:

Cevap 28/08/2010 saat 13:12
kaynak kullanıcı

oy
1

Kabuk kamu SDK parçası (o SDK belgelerinde yerde belgelenen dikkat edin) değil, bu yüzden bu kod özel API'ler dayanarak yürürlükte olduğuna dikkat edin.

Ayrıca, bu normal bir uygulama modelinin dışına koyar - size çatallı ve platform tarafından yönetilmiyordur bir süreç ne olacağı garanti var. Bu herhangi bir zamanda ölebilirsin.

Bu aynı zamanda komut kendi süreçte her ne yapıyorsa kıyasla şeyler yapmak için çok verimsiz bir yoldur. Ve bir komut için ayrı bir işlemine başlamadan hala senin uid olarak çalıştığı için, sizden daha fazla bir şey yapmasına izin vermez.

Böylece temelde ... apps 99.99% için bunu yapmayın lütfen. Eğer bir terminal uygulaması yazıyorsanız ... iyi, tamam sadece meraklılarının Zaten o umurumda olacak ve bu senin uid ya neyse olarak çalışır çünkü çok kullanmak gitmiyor. Ama aksi halde, lütfen hayır. :)

Cevap 28/08/2010 saat 19:23
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more