将 InputSource
用于 XPath
时出现错误。
InputSource inputSource = null;
try {
inputSource = new InputSource(new FileInputStream(filename));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String s = readFromFile(filename);
String uuid = taskItems.get(position).get("uuid");
XPath xPath = XPathFactory.newInstance().newXPath();
try {
Node taskNode = (Node) xPath.evaluate("//task[@uuid='" + uuid + "']", inputSource, XPathConstants.NODE);
Document document = taskNode.getOwnerDocument();
//Füge neue Zeile ein
Node noteNode = document.createElement("task_note");
noteNode.setTextContent(taskItems.get(position).get("task_note"));
taskNode.appendChild(noteNode);
//Speichere Datei
Source input = new DOMSource(document);
Result output = new StreamResult(new File(filename));
TransformerFactory.newInstance().newTransformer().transform(input, output);
} catch (XPathExpressionException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
我不知道为什么,但是当使用 String s = readFromFile(filename);' 时,我得到了 File inside
String s`。
读取文件:
private String readFromFile(String fileName) {
String ret = "";
String UTF8 = "UTF-8";
int BUFFER_SIZE = 8192;
try {
InputStream inputStream = openFileInput(fileName);
if (inputStream != null) {
BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(inputStream, UTF8), BUFFER_SIZE);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ((receiveString = bufferedReader1.readLine()) != null) {
stringBuilder.append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}
} catch (FileNotFoundException e) {
Log.e("readFromFile: ", "Datei nicht gefunden: " + e.toString());
e.printStackTrace();
} catch (IOException e) {
Log.e("readFromFile: ", "Kann Datei nicht lesen: " + e.toString());
e.printStackTrace();
}
return ret;
}
写入文件:
private void writeToFile(String data, String fileName) {
try {
String UTF8 = "UTF-8";
int BUFFER_SIZE = 8192;
FileOutputStream fileOutputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream, UTF8), BUFFER_SIZE);
bufferedWriter.write(data);
bufferedWriter.close();
} catch (IOException e) {
Log.e("writeToFile: ", "Datei-Erstellung fehlgeschlagen: " + e.toString());
}
}
那么我必须更改什么才能让 InputSource 找到文件?
最佳答案
在 readFromFile
中,您正在调用 openFileInput
,而不是 FileInputStream
构造函数。所以当你想创建一个 InputSource
时做同样的事情:
inputSource = new InputSource(openFileInput(filename));
关于java - 使用 InputSource 时发现 FileNotFound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31672784/