【发布时间】:2019-09-10 16:16:03
【问题描述】:
我正在为 Honeywell CK75 扫描仪开发一个 Android 应用程序,它将条形码扫描保存到设备上存储的 XML 文件中。
该应用正在为 Android SDK 级别 19 构建。访问存储的权限已到位
这是创建和保存 XML 文件的方法的代码。
public static void writeToXMLFile(List<Scan> scans, Context context) throws IOException {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "Scans");
for(Scan s : scans){
serializer.startTag(null, "Scan");
serializer.startTag(null, "AimID");
serializer.text(s.getAimID());
serializer.endTag(null, "AimID");
serializer.startTag(null, "BarcodeData");
serializer.text(s.getBarcodeData());
serializer.endTag(null, "BarcodeData");
serializer.startTag(null, "BarcodeID");
serializer.text(s.getBarcodeID());
serializer.endTag(null, "BarcodeID");
serializer.startTag(null, "TimeStamp");
serializer.text(s.getTimestamp());
serializer.endTag(null, "TimeStamp");
if(s.getTrailerNo().equals(null) || s.getTrailerNo().isEmpty()){
serializer.startTag(null, "BinNo");
serializer.text(s.getBinNo());
serializer.endTag(null, "BinNo");
}
else{
serializer.startTag(null, "TrailerNo");
serializer.text(s.getTrailerNo());
serializer.startTag(null, "TrailerNo");
}
}
serializer.endDocument();
String result = writer.toString();
String url = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/Scan.xml";
File f = new File(url);
f.getParentFile().mkdir();
f.createNewFile();
FileOutputStream output = new FileOutputStream(f, false);
output.write(result.getBytes(),0,result.length());
output.close();
}
我希望文件保存到 Documents 文件夹,但是当我检查该文件夹时,那里没有 XML 文件。
编辑
似乎它没有创建文件。我尝试了几种不同的方法来创建文件,但都没有奏效。目前,我并不关心 XML 是否正常,我只是想在 Android 上创建一个可以从 PC 访问的文件
【问题讨论】:
-
我强烈建议使用 SQLITE 代替
-
@user10844401 我正在使用 XML,因为一旦设备插入计算机,XML 文件将被发送到一个程序,然后该程序将该数据推送到现有数据库中。此外,我无法从设备直接连接到数据库,因为将使用它的位置没有足够的互联网连接
-
我认为 sqlite 数据将更容易导入其他数据库。此外,您可以轻松地将 sqlite 导出为 xml 或 csv。
-
@user10844401 问题不在于它是 XML 还是 sqlite。问题是我无法在设备上创建任何类型的文件。