我编写了以下代码以从SD卡删除文件:

/**
 * Deletes a file
 * 
 * @param pathToFile
 *            Path to file, eg "/sdcard/test.txt"
 * @throws IOException
 *             Throws if file doesnt exist
 */
public static void deleteFile(String pathToFile) throws IOException {
    File file = new File(pathToFile);
    if (file.delete() == false) {
        throw new IOException();
    }
}

但是,如果要使用此方法删除文件,则会出现此错误:

E/AndroidRuntime(18085): java.lang.RuntimeException: Unable to create service de.bulling.smstalkvc_offline.InstallerService: java.lang.IllegalArgumentException: File /mnt/sdcard/voicefiles.zip contains a path separator
E/AndroidRuntime(18085):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2969)
E/AndroidRuntime(18085):    at android.app.ActivityThread.access$3300(ActivityThread.java:125)
E/AndroidRuntime(18085):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
E/AndroidRuntime(18085):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(18085):    at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(18085):    at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(18085):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(18085):    at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(18085):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
E/AndroidRuntime(18085):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
E/AndroidRuntime(18085):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(18085): Caused by: java.lang.IllegalArgumentException: File /mnt/sdcard/voicefiles.zip contains a path separator
E/AndroidRuntime(18085):    at android.app.ContextImpl.makeFilename(ContextImpl.java:1602)
E/AndroidRuntime(18085):    at android.app.ContextImpl.deleteFile(ContextImpl.java:428)
E/AndroidRuntime(18085):    at android.content.ContextWrapper.deleteFile(ContextWrapper.java:163)
E/AndroidRuntime(18085):    at de.bulling.smstalkvc_offline.InstallerService.onCreate(InstallerService.java:30)
E/AndroidRuntime(18085):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2959)
E/AndroidRuntime(18085):    ... 10 more

我做错了什么?

===============>>#1 票数:4 已采纳

似乎您在InstallerService.java第30行调用了错误的函数。请确保通过使用类名之前的方式调用自己的deleteFileYourClass.deleteFile() ;

我认为以某种方式ContextWrapper.deleteFile() ,它不接受路径分隔符。

===============>>#2 票数:1

该错误不会出现在您显示的代码中。 该错误在您的InstallerService.java第30行中:

E / AndroidRuntime(18085):位于android.content.ContextWrapper.deleteFile(ContextWrapper.java:163)E / AndroidRuntime(18085):位于de.bulling.smstalkvc_offline.InstallerService.onCreate(InstallerService.java:30)

对deleteFile()的调用不应包含路径分隔符,因为其描述为“删除与此Context的应用程序包关联的给定私有文件”。 即,它的用途仅是删除安装应用程序的那个私有子目录中的文件。

===============>>#3 票数:0

您正在使用相同的名称和签名覆盖ContextImpl类中的方法(从中扩展您的活动)。 我想是在创建活动时调用此方法。

尝试将“ deleteFile”更改为其他名称。

  ask by Force translate from so

未解决问题?本站智能推荐:

2回复

IllegalArgumentException:文件包含路径分隔符Android

我正在尝试写入我的HTC One上的输出文件并在LogCat中获取以下消息: 11-21 08:05:18.228:W / System.err(6609):java.lang.IllegalArgumentException:File /storage/emulated/0/com.
2回复

文件包含路径分隔符。

当我尝试检查特定文件的存在时,我得到java.lang.illegalArgumentException: File contains a path separator 使用getFileStreamPath(..)执行此操作的正确方法是什么? 我也尝试了以下代码来替换上面代码的第
1回复

IllegalArgumentException:文件包含路径分隔符Android

我正在谷歌搜索,找不到我的问题的真实答案! 我的问题和他一样,但他要MODE_APPEND,我要MODE_PRIVATE作为文件。我该怎么办? 这是我的代码:
2回复

如何将deleteFile()与包含路径分隔符的参数一起使用?

在应用程序中,实现了deleteFile(String path)方法,该方法必须删除位于给定路径的文件。 如果路径包含路径分隔符(character / ),则该方法将引发异常,但要删除特定文件,必须使用完整路径,并且包含分隔符。 由于冲突的条件,我还没有找到成功删除文件的方法。
1回复

IllegalArgumentException:file包含路径分隔符

我正在尝试检查应用程序内部存储中的子目录中是否存在zip: 这是抛出java.lang.IllegalArgumentException: File /data/data/my.package.name/files/thesubdirectory/the.zip contains a p
3回复

将文本文件写入SDCard会在Android中产生IllegalArgumentException [重复]

可能重复: Android写入SD卡文件夹 使用此代码编写文件: 上面的代码生成的错误: 我找不到此代码出了什么问题。
1回复

如何在Android上使用文件描述符获取文件路径?

我需要使用getFileDescriptor()返回的文件描述符来获取文件绝对路径。 我该怎么做?
1回复

如何检查文件夹是否包含具有特定路径的n文件

我正在开发一个Android应用程序,我必须实现一个返回整数的函数。 我有一个包含不同文件的文件夹,每个文件都由一个自定义路径组成,如下所示: 123_part_ax0.jpg 123_part_ax1.jpg 123_part_ax2.jpg 123_pa
1回复

在Android中创建带有垂直分隔符,固定列长度和标题的表

我正在尝试在Android布局中创建表格。 我希望此表是普通表,例如gridView或datagridView,可以使用Microsoft Word获得相同的表: 我想定义列的长度(因此下面的文本将是直的)以及列和行之间的分隔符,当然还有一个不错的列标题。 到目前为止,我尝试使用T
1回复

如何在Android的File构造函数中提供路径?

我想知道我要提到的路径是文件还是文件夹的路径。 这是代码 但是,即使我给出了正确的路径,但如果给出错误的信息,也会出现错误。 eclipse中的相​​同代码为true,但Android Studio中的为false。 为什么这样?