我有一个程序的巨大问题,我以前没有或我没有注意到。我必须在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
,这正是我需要的。
非常感谢。
答案 0 :(得分:2)
如果您只想要文件名,那么您可以手动提取路径字符串的最后一个组件。像这样的东西 -
File f;
int index = f.getName().lastIndexOf('\');
String fileName = f.getName().substring(index+1);