我想在Android应用中创建一个XML文件。 这个文件我要写入我的Android设备的文档文件夹中。 后来我想使用USB将我的Android设备连接到我的PC并从文档文件夹中读取该XML文件。 我的设备是Android Galaxy Tab Pro 10.1,Android 4.4.2。
我已经尝试过了:
String fileName = "example.xml";
String myDirectory = "myDirectory";
String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();
File outputFile = new File(externalStorage + File.separator + myDirectory + File.separator + fileName);
但是没有创建文件。我还想稍后再将文件夹中的文件读入may app。
感谢任何帮助,谢谢!
答案 0 :(得分:15)
我知道这已经很晚了,但你可以得到这样的文件目录:
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
File file = new File(dir, "example.txt");
//Write to file
try (FileWriter fileWriter = new FileWriter(file)) {
fileWriter.append("Writing to file!");
} catch (IOException e) {
//Handle exception
}
答案 1 :(得分:6)
在Android Manifest中设置权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
使用此代码写入外部目录
String fileName = "example.xml";
String dirName = "MyDirectory";
String contentToWrite = "Your Content Goes Here";
File myDir = new File("sdcard", dirName);
/*if directory doesn't exist, create it*/
if(!myDir.exists())
myDir.mkdirs();
File myFile = new File(myDir, fileName);
/*Write to file*/
try {
FileWriter fileWriter = new FileWriter(myFile);
fileWriter.append(contentToWrite);
fileWriter.flush();
fileWriter.close();
}
catch(IOException e){
e.printStackTrace();
}
答案 2 :(得分:1)
在创建文件之前,您必须创建用于保存文件的目录。 试试这个: - String fileName =“example.xml”; String myDirectory =“myDirectory”;
String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();
File outputDirectory = new File(externalStorage + File.separator + myDirectory );
if(!outputDirectory.exist()){
outputDirectory.mkDir();
}
File outputFile = new File(externalStorage + File.separator + myDirectory + File.separator + fileName);
outputFile.createFile();
答案 3 :(得分:0)
尝试重启设备,然后检查文件是否存在。如果是这样,您正在创建它(它看起来应该基于您的代码),但在您的设备上扫描媒体之前它不会显示。尝试实现MediaScannerConnectionClient,使其在创建后显示为可见。
public class MainActivity extends Activity implements MediaScannerConnectionClient {
private MediaScannerConnection msConn;
private File example;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
msConn = new MediaScannerConnection(this.getApplicationContext(), this);
String dir = Environment.getExternalStorageDirectory() + "/Documents/";
example = new File(dir, "example.xml");
msConn.connect();
}
@Override
public void onMediaScannerConnected() {
msConn.scanFile(example.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
msConn.disconnect();
}