我想将通过Android应用程序生成和修改的.docx文件存储到android手机的内部存储中(如果有帮助的话,所有相同型号的手机)。我已经加载了模板(位于应用程序中)并修改了字段,但是我阻止了如何保存文件。
我正在使用docx4j,它有一个保存方法:
private void writeDocxToStream(WordprocessingMLPackage template,
String target) throws IOException, Docx4JException {
File f = new File(target);
template.save(f);
}
我已尝试过其他更多"手册"方式,但我总是有同样的问题:
目标目录的输入应该是什么?
外部存储似乎很容易,但对于内部存储而言,这是其他的东西。
当我只是尝试在test.txt中输出一个String时,然后使用经典的BufferedReader
,InputStreamReader
,FileInputStream
方式获取其中的String,我可以& #39; t得到这些信息。
关于这个主题的信息非常分散,我在下午阅读了大约数千种实现存储的方法,但没有一个与我的问题相对应。
我已在我的清单中设置<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
只是为了确定,但它并没有改变任何内容。
此外,也许它与问题有关,我无法在我的测试设备(可以运行应用程序的三星Galaxy 5S)上访问文件(来自设备或计算机),我似乎有除了几个xml和txt文件之外,所有文件夹中都没有任何文件...(但是,在执行以下操作时我仍然没有得到:在EditText中写入 - 存储在文件中 - 在.txt中保存文件 - 检索字符串 - 视图textView中的字符串。
这非常重要,因为我必须在创建它们之后检索.docx文件以供进一步使用。
感谢您的回答,如果我能提供更多信息,请告诉我,我知道我的问题还不清楚。
答案 0 :(得分:0)
外部存储似乎很容易,但对于内部存储而言,这是其他的东西。
要写入external storage,您可以使用双参数File
构造函数,在该构造函数中提供指向外部存储上某个根位置的File
对象,例如:
new File(getExternalFilesDir(null), target);
要写入internal storage,您可以使用双参数File
构造函数,在该构造函数中,您可以提供指向内部存储上某个根位置的File
对象,例如:
new File(getFilesDir(), target);
答案 1 :(得分:0)
如果您将文件写入应用程序的私人内部存储空间,则不必持有权限android.permission.WRITE_EXTERNAL_STORAGE
。
在您的代码中,通过电话
context.getDir("testfile", Context.MODE_WORLD_READABLE)).getPath().toString()+"/test.docx";
文件将写入路径
/data/data/com.yourpackage.name/app_testfile/test.docx
如果写入操作成功,您可以使用上面的路径读取和检索文件的内容。