Android 如何为每次下载创建一个新文件?
Android how to create a new file for each download?
我正在创建一个应用程序,每次按下下载按钮时它都会在我的 storage.My 中创建一个 pdf 文件 storage.My 问题是新创建的文件会用相同的文件覆盖现有文件 name.I 需要下载新 filename.What 我正在尝试
dirpath =
android.os.Environment.getExternalStorageDirectory().toString();
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");}
以上几行程序创建文件,但我需要打开上次下载的文件
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
以上这些代码行会产生错误。
Error:File no longer exist,the file maybe deleted or changed or
removed by another program
1.create 一个新文件并在我点击按钮时防止覆盖
2.open 最后下载的文件
我是 Android 的新手,对此有点困惑,需要你们的帮助。
您正在为您创建的每个文件分配相同的名称。尝试像这样给出一个唯一的名称:
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
randomUUIDString
将是您的 pdf 文件的唯一字符串。此外,如果您希望使用这些字符串,请将它们存储在 SQLite 数据库中。
您在意图中输入的路径与创建的文件路径不匹配。
试试这个。
dirpath = android.os.Environment.getExternalStorageDirectory().toString();
String lastFilePath = null;
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");}
lastFilePath = file.getAbsolutePath();
然后就可以这样打开文件了
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(lastFilePath));
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
希望对您有所帮助:)
将if
替换为while
并显示Intent
:
dirpath = android.os.Environment.getExternalStorageDirectory().toString();
int increase = 0;
file = new File(dirpath+"/NewPDF.pdf");
while(file.exists()) {
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");
}
file.createNewFile();
... store data in file here ...
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
您调用 Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
来打开文件,所以为什么要添加 /NewPDF.pdf 因为它已经在您的文件中了。只需删除它。
替换此行
Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
到
Uri uri = Uri.fromFile(new File( file));
使用Time stamp代替Counter,这样每次都可以创建一个新文件。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.US);
Date timeStamp = new Date();
dirpath =
android.os.Environment.getExternalStorageDirectory().toString();
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +formatter.format(timeStamp )+".pdf");}
我正在创建一个应用程序,每次按下下载按钮时它都会在我的 storage.My 中创建一个 pdf 文件 storage.My 问题是新创建的文件会用相同的文件覆盖现有文件 name.I 需要下载新 filename.What 我正在尝试
dirpath =
android.os.Environment.getExternalStorageDirectory().toString();
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");}
以上几行程序创建文件,但我需要打开上次下载的文件
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
以上这些代码行会产生错误。
Error:File no longer exist,the file maybe deleted or changed or
removed by another program
1.create 一个新文件并在我点击按钮时防止覆盖 2.open 最后下载的文件 我是 Android 的新手,对此有点困惑,需要你们的帮助。
您正在为您创建的每个文件分配相同的名称。尝试像这样给出一个唯一的名称:
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
randomUUIDString
将是您的 pdf 文件的唯一字符串。此外,如果您希望使用这些字符串,请将它们存储在 SQLite 数据库中。
您在意图中输入的路径与创建的文件路径不匹配。
试试这个。
dirpath = android.os.Environment.getExternalStorageDirectory().toString();
String lastFilePath = null;
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");}
lastFilePath = file.getAbsolutePath();
然后就可以这样打开文件了
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(lastFilePath));
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
希望对您有所帮助:)
将if
替换为while
并显示Intent
:
dirpath = android.os.Environment.getExternalStorageDirectory().toString();
int increase = 0;
file = new File(dirpath+"/NewPDF.pdf");
while(file.exists()) {
increase++;
file = new File(dirpath + "/NewPDF" +increase+".pdf");
}
file.createNewFile();
... store data in file here ...
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
您调用 Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
来打开文件,所以为什么要添加 /NewPDF.pdf 因为它已经在您的文件中了。只需删除它。
替换此行
Uri uri = Uri.fromFile(new File( file,"/NewPDF.pdf"));
到
Uri uri = Uri.fromFile(new File( file));
使用Time stamp代替Counter,这样每次都可以创建一个新文件。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss", Locale.US);
Date timeStamp = new Date();
dirpath =
android.os.Environment.getExternalStorageDirectory().toString();
// int increase=0;
file = new File(dirpath+"/NewPDF.pdf");
if(file.exists()){
increase++;
file = new File(dirpath + "/NewPDF" +formatter.format(timeStamp )+".pdf");}