我几天前在这里发布了同样的问题(Java使用输入流读取外部程序的标准输出),我在阅读时遇到了一些块的优点(while(is.read())!= -1)),但我仍然无法解决问题.
在阅读了这个类似问题的答案后,
Java InputStream阻塞读取 (尤其是Guss发布的答案),
我开始相信,如果程序是交互式的,那么使用is.read()!= -1条件循环输入流是不起作用的(即它需要来自用户的多个输入并在后续输入时显示附加输出,并且只有在给出显式退出命令时,程序才会退出).我承认我对多线程知之甚少,但我认为我需要的是一种在需要用户输入时立即暂停输入流线程(stdout,stderr各一个)的机制,并在输入后恢复提供以防止阻止.以下是我当前的代码,该代码在指示的行上遇到了一个块:
EGMProcess egm = new EGMProcess(new String[]{directory + "/egm", "-o",
"CasinoA", "-v", "VendorA", "-s", "localhost:8080/gls/MessageRobot.action ",
"-E", "glss_env_cert.pem", "-S", "glss_sig_cert.pem", "-C", "glsc_sig_cert.pem",
"-d", "config", "-L", "config/log.txt", "-H", "GLSA-SampleHost"}, new String[]{"PATH=${PATH}"}, directory);
egm.execute();
BufferedReader stdout = new BufferedReader(new InputStreamReader(egm.getInputStream()));
BufferedReader stderr = new BufferedReader(new InputStreamReader(egm.getErrorStream()));
EGMStreamGobbler stdoutprocessor = new EGMStreamGobbler(stdout, egm);
EGMStreamGobbler stderrprocessor = new EGMStreamGobbler(stderr, egm);
BufferedWriter stdin = new BufferedWriter(new OutputStreamWriter(egm.getOutputStream()));
stderrprocessor.run(); //<-- the block occurs here!
stdoutprocessor.run();
//EGM/Agent test …
Run Code Online (Sandbox Code Playgroud) 我有这种方法从字符串URI中获取文件名.我该怎么做才能让它更健壮?
private string GetFileName(string hrefLink)
{
string[] parts = hrefLink.Split('/');
string fileName = "";
if (parts.Length > 0)
fileName = parts[parts.Length - 1];
else
fileName = hrefLink;
return fileName;
}
Run Code Online (Sandbox Code Playgroud) 以下内容产生了一个从我的用户模型中提取的工作选择下拉列表:
<%= f.collection_select(:user_id, @users, :id, :firstname, options ={:prompt => "Select a User"} %>
Run Code Online (Sandbox Code Playgroud)
我也有一个专栏:lastname.
我试图用类似的东西填充选择 :firstname + " " + :lastname
如果我只是把它放在哪里:firstname是,这显然会失败.你将如何连接两列并填充选择框.
谢谢.
我有一个.HTML文件,附有许多照片用于显示照片库.我正在用新的替换旧照片,我认为必须有一种比简单地复制和粘贴重复文件名更聪明的方式.
我希望能够在每次替换时替换和增加文件名,从我选择的基本文件名开始.例如...
...images/69thStreet010.jpg
...images/69thStreet011.jpg
...images/69thStreet012.jpg
Run Code Online (Sandbox Code Playgroud)
基本上执行CTRL + F和REPLACE'69thStreet010.jpg'与......
...images/xyz001.jpg
...images/xyz002.jpg
...images/xyz003.jpg
Run Code Online (Sandbox Code Playgroud)
等等,直到我希望它停止.这里有人有什么建议吗?非常感谢!
更新:我还应该补充一点,我正在使用Notepad ++来编辑我的文件.
我有一个图像,根据屏幕分辨率,在我的CSS流程布局中下降,因为我已将其宽度和高度设置为静态值.
在CSS流布局中是否有一种方法可以在有人使浏览器窗口变小时自动调整图像大小.我已经看到这在html表格布局中完成,我假设表格使它成为可能 - 有没有办法在CSS流程布局中也这样做?
我们使用Linux中的/ proc和/ sys文件系统来发现各种类型的系统配置信息.通常,我们会浏览不同的文件和目录,直到找到所需的信息.
我想知道是否有人知道一个权威资源,它记录了如何通过/ proc和/ sys文件系统导航以查找特定信息.我们主要从这些文件系统中的各种文件中获取USB,PCI和SCSI信息.
谢谢,
我有一个模特:
from django.db import models
CHOICES = (
('s', 'Glorious spam'),
('e', 'Fabulous eggs'),
)
class MealOrder(models.Model):
meal = models.CharField(max_length=8, choices=CHOICES)
Run Code Online (Sandbox Code Playgroud)
我有一个表格:
from django.forms import ModelForm
class MealOrderForm(ModelForm):
class Meta:
model = MealOrder
Run Code Online (Sandbox Code Playgroud)
我想使用formtools.preview.默认模板打印选择的短版本('e'而不是'Fabulous eggs'),因为它使用
{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
Run Code Online (Sandbox Code Playgroud)
我想要一个像上面提到的一般模板,但是打印'Fabulous eggs'代替.
[因为我怀疑真正的问题在哪里,我为所有人加粗了:)]
我知道如何以一种本身丑陋的方式获得一个选择的冗长版本:
{{ form.meal.field.choices.1.1 }}
Run Code Online (Sandbox Code Playgroud)
真正的痛苦是我需要得到所选择的选择,而我想到的唯一方法是迭代选择和检查{% ifequals currentChoice.0 choiceField.data %},这甚至更加丑陋.
可以轻松完成吗?或者它需要一些模板标签编程?难道这不应该在django中可用吗?
这是我的问题.
现在我有一个Linux服务器应用程序(使用C++编写 - gcc),它与Windows C++客户端应用程序通信(Visual Studio 9,Qt 4.5.)
什么是非常要SSL支持添加到两边,以确保通信,而不完全古亭现有协议最简单的方法?
这是一个VOIP应用程序,它使用UDP和TCP的组合来初始设置连接并进行端口隧道处理,然后使用UDP作为流数据.
我过去遇到很多问题,从头开始创建安全证书,这些都是让这些东西运转所必需的.
现有的工作示例代码将是理想的.
谢谢!
我在MOSS 2007中有一个文件库,它有文件夹和文件.文档库中的文档视图具有以下列:文档名称,类型,创建日期时间,创建者,修改日期时间.如何配置视图,使其不显示文件夹的"已修改","已创建"和"已创建"字段的任何信息.换句话说,我希望文档库文档列表中的"文件夹"内容类型的这些字段为空.提前致谢.
[编辑]虽然Paul-Jan的回答部分解决了我的问题,但我仍然不知道如何解决"Created By"和"Modified By"这两个列.在"计算值"中没有属性可以引用它们.Kusek说"编辑器"可用于解决文档的"修改者"属性,但这不起作用
sharepoint moss customization sharepoint-2007 document-library
有没有办法停用UIScrollView的减速?
我想允许用户滚动画布,但我不希望画布在用户抬起手指后继续滚动.