Я хотел бы создать глобальный объект FileInputStream и использовать его в течение длительного времени для моего приложения.Как создать объект Global FileInputStream, который будет доступен для доступа из другого класса внутри моего проекта?
У меня есть класс последующего, которые создают свое FileInputStream объективистское и возвращают результат моего запроса через файл XML:
package Engine;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import com.ximpleware.AutoPilot;
import com.ximpleware.VTDException;
import com.ximpleware.VTDGen;
import com.ximpleware.VTDNav;
public class BACENGQueryXMLbyVTD {
public String query;
public String path;
public BACENGQueryXMLbyVTD(String query, String path) {
this.query = query;
this.path = path;
}
public ArrayList query() throws IOException, VTDException {
System.out.println(path);
File f = new File(path);
//System.out.println(f);
FileInputStream fis = new FileInputStream(f);
//System.out.println(fis);
byte[] xmlContent = new byte[(int) f.length()];
fis.read(xmlContent);
VTDGen vg = new VTDGen();
vg.setDoc(xmlContent);
vg.parse(false);
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
int node = 0;
ap.selectXPath(query);
int i;
ArrayList<String> interfaces = new ArrayList<String>();
while ((i = ap.evalXPath()) != -1) {
vn.push();
interfaces.add(vn.toString(i + 1));
}
ap.resetXPath();
return interfaces;
}
}
Этот класс вызываются из моего основного класса, который имеет петлю.
for (int c = 0; c < nodeNames.size(); c++) {
String Queries2 = "/import_data/group/node[@name='" +nodeNames.get(c) + "']/interface/@network_value";
BACENGQueryXMLbyVTD getNodesInterfaces = new BACENGQueryXMLbyVTD(Queries2, TransitPath);
listOfNodeInterfaces = getNodesInterfaces.query();
}
Он работает отлично, однако, чтобы уменьшить потребление ресурсов IO на моем сервере HD. Я хотел бы создать уникальный объект FileInputStream и использовать его для каждого запроса, который должен быть выполнен.
Может ли кто-нибудь указать способ сделать это?
Кэш? Изменен ли ваш файл? Если нет, кеш - путь. –