我有一个程序的大问题,我以前没有,或者我没有注意到。我必须在 3.5 小时内提交我的工作,所以希望能帮助我的人在那之前看到。
我有一个 Java 程序,用户可以使用该程序选择文件,然后将这些文件的路径传递给 Android 应用程序。在 Android 应用程序中,我使用该路径创建了一个新的文件对象,然后我调用了 fileObject.getName()
。
这会产生不同的结果,具体取决于 Java 程序是在 Ubuntu 还是 Windows 中运行。如果从 Ubuntu 运行,Android 应用程序会成功提取文件名,但是如果从 Windows 运行,Android 应用程序会提取完整路径。
我最初将发送到 Android 的路径设置为规范路径,此后我将其更改为绝对路径,因为我不确定这是否会导致问题。这并没有解决问题。此问题是使用 Windows 路径在 Android 中创建文件对象的结果吗?我以为这无关紧要,但我想我错了。
如果有人能在接下来的几个小时内帮助我,你可能会保留我的学位,因为这是一个重要的项目,我已经不得不提交我的报告,其中没有提到我现在遇到的这个问题,所以我可以'甚至不再解释它我只需要修复它。
为了澄清,如果我在 Windows 中选择一个路径为 C:\Users\Username\Pictures\picture.jpeg
然后将其传递给 Android,getName()
方法返回方法的确切路径
而如果我从 ubuntu 使用路径
/home/username/Pictures/picture.jpeg
并将其传递给 Android,然后 getName()
仅返回 picture.jpeg
,这正是我所需要的。
非常感谢。
最佳答案
如果您只需要文件名,那么您可以手动提取路径字符串的最后一个组成部分。像这样的 -
File f;
int index = f.getName().lastIndexOf('\');
String fileName = f.getName().substring(index+1);
关于java - 从 Java 中生成的文件路径在 Android 中创建的 File 对象上的 file.getName() 产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23217080/