phone 的外部存储中未创建文件
File isn't getting created in the phone's external storage
我已经使用此代码在我的 Phone 的外部存储中创建了一个文件。请注意,我已经在我的清单文件中设置了读写权限。
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String fileName = formatter.format(now) + ".txt"; //like 20170602.txt
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
String bodyOfFile = "Body of file!";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(bodyOfFile.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
我的 LogCat
显示如下。我在该特定位置看不到文件 20170602.txt
。在我的 Download
文件夹中,没有任何具有该名称的文件。谁能告诉我哪里出错了。
D/tag: Directory: /storage/emulated/0/Android/data/com.pc.tab/files/Download
D/tag: File: /storage/emulated/0/Android/data/com.pc.tab/files/Download/20170605.txt
更新:
我在 运行 这个应用程序中使用 MOTO G4。我在内部存储中找到了 20170602.txt
文件。
File Manager --> `LOCAL` tab ( Upper right ) --> Internal Storage --> Android --> data --> com.pc.tab --> files --> Download --> 20170602.txt
将目录和文件本身分开很重要
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
在您的代码中,您对要写入的文件调用了 mkdirs,这是一个错误,因为 mkdirs 使您的文件成为一个目录。您应该仅为该目录调用 mkdirs,以便在它不存在时创建它,并且当您为此文件创建新的 FileOutputStream 对象时将自动创建该文件。
您的代码应如下所示:
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String fileName = formatter.format(now) + ".txt"; //like 20170602.txt
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
String bodyOfFile = "Body of file!";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(bodyOfFile.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
我已经使用此代码在我的 Phone 的外部存储中创建了一个文件。请注意,我已经在我的清单文件中设置了读写权限。
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String fileName = formatter.format(now) + ".txt"; //like 20170602.txt
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
String bodyOfFile = "Body of file!";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(bodyOfFile.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
我的 LogCat
显示如下。我在该特定位置看不到文件 20170602.txt
。在我的 Download
文件夹中,没有任何具有该名称的文件。谁能告诉我哪里出错了。
D/tag: Directory: /storage/emulated/0/Android/data/com.pc.tab/files/Download
D/tag: File: /storage/emulated/0/Android/data/com.pc.tab/files/Download/20170605.txt
更新:
我在 运行 这个应用程序中使用 MOTO G4。我在内部存储中找到了 20170602.txt
文件。
File Manager --> `LOCAL` tab ( Upper right ) --> Internal Storage --> Android --> data --> com.pc.tab --> files --> Download --> 20170602.txt
将目录和文件本身分开很重要
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
在您的代码中,您对要写入的文件调用了 mkdirs,这是一个错误,因为 mkdirs 使您的文件成为一个目录。您应该仅为该目录调用 mkdirs,以便在它不存在时创建它,并且当您为此文件创建新的 FileOutputStream 对象时将自动创建该文件。
您的代码应如下所示:
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
Date now = new Date();
String fileName = formatter.format(now) + ".txt"; //like 20170602.txt
File directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
File file = new File(directory, fileName);
String bodyOfFile = "Body of file!";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(bodyOfFile.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}