Java-从列表中查找匹配对
背景: 我需要在正在使用的服务器上对进程进行负载测试。我正在做的是在客户端创建一组文件,并将它们上传到服务器。服务器正在监视新文件(在输入目录中,文件名是唯一的),一旦有一个新文件,它将处理它,一旦完成,它将创建一个与输出目录同名但扩展名不同的响应文件。如果处理失败,它会将传入文件放入error dir。我正在使用监视服务器上的更改,它输出:Java-从列表中查找匹配对,java,sorting,Java,Sorting,背景: 我需要在正在使用的服务器上对进程进行负载测试。我正在做的是在客户端创建一组文件,并将它们上传到服务器。服务器正在监视新文件(在输入目录中,文件名是唯一的),一旦有一个新文件,它将处理它,一旦完成,它将创建一个与输出目录同名但扩展名不同的响应文件。如果处理失败,它会将传入文件放入error dir。我正在使用监视服务器上的更改,它输出: 10:48:47 /path/to/in/ CREATE ABCD.infile1 10:48:55 /path/to/out/ CREATE ABCD.
10:48:47 /path/to/in/ CREATE ABCD.infile1
10:48:55 /path/to/out/ CREATE ABCD.outfile1
或
问题:
我需要解析所有结果的列表(计划在java中实现),就像这样,我获取内嵌并将其与相同的文件名(在ERR或OUT中找到)匹配,计算所花费的时间并指出它是否成功。我的想法是创建3个列表(in、out、err)并尝试解析,比如(在伪代码中)
问题:
这有效吗?还是有更好的方法来处理这种情况?无论如何,你可能会认为这是一个代码,你只执行了一次,为什么要挣扎,但我真的想知道如何正确处理这个问题 使用列表的解决方案是有问题的,因为您必须使它们与驱动器的状态正确同步,并始终加载它们。更重要的是,您将在某一点上达到存储在单个位置的文件的容量限制 您可以选择使用i/OAPI进行检查,或者引入一个中间数据库来存储您的值 另一种方法是数据库,您将在其中存储有关文件实际拥有的密钥和物理路径的信息 如果我是你的话,我会从I/OAPI开始,设计一个简单的接口,如果解决方案效率低下的话,这个接口可以在将来被替换 您可以使用“UserDefinedfileAttributeView”概念。 创建您自己的文件属性,比如“Result”,并为in dir中的文件相应地设置其值。如果文件移动到OUT dir,“结果”=“成功”,如果文件移动到ERR dir,“结果”=“错误” 我尝试了下面的代码,希望能有所帮助
public static void main(String[] args) {
try{
Path file = Paths.get("C:\\Users\\rohit\\Desktop\\imp docs\\Steps.txt");
UserDefinedFileAttributeView userView = Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
String attribName = "RESULT";
String attribValue = "SUCCESS";
userView.write(attribName, Charset.defaultCharset().encode(attribValue));
List<String> attribList = userView.list();
for (String s : attribList) {
ByteBuffer buf = ByteBuffer.allocate(userView.size(s));
userView.read(s, buf);
buf.flip();
String value = Charset.defaultCharset().decode(buf).toString();
if("SUCCESS".equals(value)){
System.out.print(String.format("User defined attribute: %s", s));
System.out.println(String.format("; value: %s", value));
}
}
}
catch(Exception e){
}
publicstaticvoidmain(字符串[]args){
试一试{
Path file=Path.get(“C:\\Users\\rohit\\Desktop\\imp docs\\Steps.txt”);
UserDefinedFileAttributeView用户视图=Files.getFileAttributeView(文件,UserDefinedFileAttributeView.class);
字符串attribName=“结果”;
字符串attribValue=“成功”;
write(attribName,Charset.defaultCharset().encode(attribValue));
List attribList=userView.List();
对于(字符串s:attribList){
ByteBuffer buf=ByteBuffer.allocate(userView.size);
userView.read(s,buf);
buf.flip();
字符串值=Charset.defaultCharset().decode(buf.toString();
如果(“成功”。等于(价值)){
系统输出打印(字符串格式(“用户定义属性:%s”,s));
System.out.println(String.format(“;值:%s”,值));
}
}
}
捕获(例外e){
}
您可以对放入目录中的每个文件执行此操作
inList
outList
errList
for item : inList
if outlist.contains(item) parse;
else if errList.contains(item) parse;
else error;
public static void main(String[] args) {
try{
Path file = Paths.get("C:\\Users\\rohit\\Desktop\\imp docs\\Steps.txt");
UserDefinedFileAttributeView userView = Files.getFileAttributeView(file, UserDefinedFileAttributeView.class);
String attribName = "RESULT";
String attribValue = "SUCCESS";
userView.write(attribName, Charset.defaultCharset().encode(attribValue));
List<String> attribList = userView.list();
for (String s : attribList) {
ByteBuffer buf = ByteBuffer.allocate(userView.size(s));
userView.read(s, buf);
buf.flip();
String value = Charset.defaultCharset().decode(buf).toString();
if("SUCCESS".equals(value)){
System.out.print(String.format("User defined attribute: %s", s));
System.out.println(String.format("; value: %s", value));
}
}
}
catch(Exception e){
}