Как вы читаете содержимое файла из выражения условной точки останова JAVA в Eclipse?
Условие моей точки останова истинно, когда значение моей строковой переменной содержит «заработок»:
myVariable != null && myVariable.contains("earnings")
Я хочу, чтобы условная точка останова заменяла содержимое строки, когда она истинна; однако я смог сделать это, только дождавшись разрыва JVM (в точке останова), а затем отобразив следующий блок (Ctrl + Shift + D). Блок считывает содержимое файла в myVariable
.
String sCurrentLine, fileName = "modified-earnings.xml";
java.lang.StringBuffer sb = new java.lang.StringBuffer();
java.io.FileReader fr = new java.io.FileReader(fileName);
java.io.BufferedReader br = new java.io.BufferedReader(fr);
while ((sCurrentLine = br.readLine()) != null) {
sb.append(sCurrentLine + System.getProperty("line.separator"));
}
fr.close();
// this is where my variable gets the new value from a file
myVariable = sb.toString();
br.close();
Как видите, необходимость оценивать строки каждый раз, когда я хочу заменить значение строки, немного утомительна, поэтому я хочу, чтобы отладчик делал это за меня, используя ту же условную природу моей точки останова. Обратите внимание на дополнительное (последнее) логическое выражение (myVariable = magicCode("modified-earnings.xml")) != null
myVariable != null && myVariable.contains("earnings")
&& (myVariable = magicCode("modified-earnings.xml")) != null
Чего мне не хватает, так это функции magicCode, которая не может кодировать, поскольку я не могу (повторяю, не могу) изменить код или добавить новые JARS в путь к классам. В идеале системный API сделает это:
myVariable = StreamToString.do(System.getResourceAsStream("modified-earnings.xml"))