Phonegap - 如何将 .txt 文件保存在 android 手机的根目录中
Phonegap - How to save .txt file in root directory of android mobile
我正在尝试使用 phonegap 在 android 手机的根目录中保存一个 .txt 文件。
我已经安装了这些插件 'cordova-plugin-file' 和 'cordova-plugin-file-transfer'。在 config.xml 文件中,我添加了这个首选项。
<preference name="AndroidPersistentFileLocation" value="Internal" />
这是我的代码。
<button class="btn-lg btn-success" onclick="saveFile('hello_world.txt', 'This is Dummy Content')">Write File</button>
处理点击事件的代码。
function saveFile(fileName, fileData) {
// Get access to the file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
// Create the file.
fileSystem.root.getFile(fileName, {create: true, exclusive: false}, function (entry) {
// After you save the file, you can access it with this URL
var myFileUrl = entry.toURL()
entry.createWriter(function (writer) {
writer.onwriteend = function (evt) {
alert("Successfully saved file to " + myFileUrl)
}
// Write to the file
writer.write(fileData)
}, function (error) {
alert("Error: Could not create file writer, " + error.code)
})
}, function (error) {
alert("Error: Could not create file, " + error.code)
})
}, function (evt) {
alert("Error: Could not access file system, " + evt.target.error.code)
})
}
成功后回调return这个文件位置。
file:///data/data/com.adobe.phonegap.app/files/files/hello_world.txt
但是当我试图在给定位置找到这个文件时。它不在那里。我想要这个文件在我的手机根目录中。
String path = this.getApplicationContext().getFilesDir() + "/testDir/";
File file = new File(path);
file.mkdirs();
path += "testlab.txt";
OutputStream myOutput;
try {
myOutput = new BufferedOutputStream(new FileOutputStream(path,true));
write(myOutput, new String("TEST").getBytes());
myOutput.flush();
myOutput.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
如果没有 root 或使用 root 权限,您将无法写入设备的根目录。也许您想写入 SD 卡。在这种情况下,当您设置正确的权限时,写入 /sdcard/ 应该是可能的。
如果您想访问您的本地应用程序数据,您可以运行在此处执行此命令:
adb shell run-as com.adobe.phonegap.app ls -laR
但是通常您无法查看 /data/data
中的目录
查看包含工作示例的link。
link 包含用于文件下载、保存和打开的示例 cordova 应用程序。也支持文件夹删除选项。
查看自述文件部分。希望能帮助到你。
您也可以查看此 了解更多信息。
我通常使用两个选项中的一个来保存文件,将其保存在内部存储的主目录或我的应用程序的主目录中。
选项 1:
String directory = Environment.getExternalStorageDirectory().getAbsolutePath();
/* it will give you home directory of internal storage like this /storage/emulated/0*/
String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
/* it will give DCIM folder directory /storage/emulated/0/DCIM */
String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
/* it gives /storage/emulated/0/Pictures */
选项 2:或者您可以使用移动用户看不到此文件的应用程序目录下面是此代码
ContextWrapper wrapper = new ContextWrapper(this);
String directory = wrapper.getDir("MyTempFolder", ContextWrapper.MODE_PRIVATE).toString();
/*directory will be of /data/data/com.your_domain_name.your_project_name/app_MyTempFolder*/
并使用以下代码保存文件
File myFile = new File(directory, "MyFile.txt");
if(!myFile.exists())
myFile.createNewFile();
如果您想在该文件中写入一些数据
FileWriter writer = new FileWriter(myFile);
writer.write("this is my first line in the file");
writer.close();
我正在尝试使用 phonegap 在 android 手机的根目录中保存一个 .txt 文件。 我已经安装了这些插件 'cordova-plugin-file' 和 'cordova-plugin-file-transfer'。在 config.xml 文件中,我添加了这个首选项。
<preference name="AndroidPersistentFileLocation" value="Internal" />
这是我的代码。
<button class="btn-lg btn-success" onclick="saveFile('hello_world.txt', 'This is Dummy Content')">Write File</button>
处理点击事件的代码。
function saveFile(fileName, fileData) {
// Get access to the file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {
// Create the file.
fileSystem.root.getFile(fileName, {create: true, exclusive: false}, function (entry) {
// After you save the file, you can access it with this URL
var myFileUrl = entry.toURL()
entry.createWriter(function (writer) {
writer.onwriteend = function (evt) {
alert("Successfully saved file to " + myFileUrl)
}
// Write to the file
writer.write(fileData)
}, function (error) {
alert("Error: Could not create file writer, " + error.code)
})
}, function (error) {
alert("Error: Could not create file, " + error.code)
})
}, function (evt) {
alert("Error: Could not access file system, " + evt.target.error.code)
})
}
成功后回调return这个文件位置。
file:///data/data/com.adobe.phonegap.app/files/files/hello_world.txt
但是当我试图在给定位置找到这个文件时。它不在那里。我想要这个文件在我的手机根目录中。
String path = this.getApplicationContext().getFilesDir() + "/testDir/";
File file = new File(path);
file.mkdirs();
path += "testlab.txt";
OutputStream myOutput;
try {
myOutput = new BufferedOutputStream(new FileOutputStream(path,true));
write(myOutput, new String("TEST").getBytes());
myOutput.flush();
myOutput.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
如果没有 root 或使用 root 权限,您将无法写入设备的根目录。也许您想写入 SD 卡。在这种情况下,当您设置正确的权限时,写入 /sdcard/ 应该是可能的。
如果您想访问您的本地应用程序数据,您可以运行在此处执行此命令:
adb shell run-as com.adobe.phonegap.app ls -laR
但是通常您无法查看 /data/data
中的目录查看包含工作示例的link。
link 包含用于文件下载、保存和打开的示例 cordova 应用程序。也支持文件夹删除选项。
查看自述文件部分。希望能帮助到你。
您也可以查看此
我通常使用两个选项中的一个来保存文件,将其保存在内部存储的主目录或我的应用程序的主目录中。
选项 1:
String directory = Environment.getExternalStorageDirectory().getAbsolutePath();
/* it will give you home directory of internal storage like this /storage/emulated/0*/
String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
/* it will give DCIM folder directory /storage/emulated/0/DCIM */
String directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
/* it gives /storage/emulated/0/Pictures */
选项 2:或者您可以使用移动用户看不到此文件的应用程序目录下面是此代码
ContextWrapper wrapper = new ContextWrapper(this);
String directory = wrapper.getDir("MyTempFolder", ContextWrapper.MODE_PRIVATE).toString();
/*directory will be of /data/data/com.your_domain_name.your_project_name/app_MyTempFolder*/
并使用以下代码保存文件
File myFile = new File(directory, "MyFile.txt");
if(!myFile.exists())
myFile.createNewFile();
如果您想在该文件中写入一些数据
FileWriter writer = new FileWriter(myFile);
writer.write("this is my first line in the file");
writer.close();