从Java中生成的文件路径在Android中创建的File对象上的file.getName()会产生奇怪的结果

时间:2014-04-22 10:35:09

标签: java android windows ubuntu

我有一个程序的巨大问题,我以前没有或我没有注意到。我必须在3.5小时内提交我的工作,所以希望能够帮助我的人在此之前看到这一点。

我有一个Java程序,用户可以使用该程序选择文件,然后将这些文件的路径传递给Android应用程序。在Android应用程序中,我使用路径创建一个新的File对象,然后我调用fileObject.getName()

这会产生不同的结果,具体取决于Java程序是在Ubuntu还是Windows中运行。如果从Ubuntu运行,则Android应用程序会成功提取文件名,但是如果从Windows运行,那么Android应用程序将提取完整路径。

我最初将发送到Android的路径作为Canonical路径,然后我将其更改为绝对路径,因为我不确定是否会导致问题。这还没有解决问题。此问题是使用Windows路径在Android中创建File对象的结果吗?我认为没关系,但我想我错了。

如果有人可以在接下来的几个小时内帮助我,你可以保存我的学位,因为这是一个重要的项目,我已经不得不提交我的报告,但没有提到我现在遇到的这个问题,所以我可以'甚至解释它我不得不解决它。

为了澄清,如果我在窗口中选择具有路径C:\Users\Username\Pictures\picture.jpeg

的文件

然后将其传递给Android,getName()方法返回该方法的确切路径

然而,如果我是从ubuntu用路径做的话 /home/username/Pictures/picture.jpeg 并将其传递给Android,然后getName()只返回picture.jpeg,这正是我需要的。

非常感谢。

1 个答案:

答案 0 :(得分:2)

如果您只想要文件名,那么您可以手动提取路径字符串的最后一个组件。像这样的东西 -

File f;
int index = f.getName().lastIndexOf('\');
String fileName = f.getName().substring(index+1);