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

标签 java android windows ubuntu

我有一个程序的大问题,我以前没有,或者我没有注意到。我必须在 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/

相关文章:

java - maven 缺少 Artifact

java - 从网络上的远程数据库获取连接延迟近 12 秒

java - 是否有 JDK 或 Guava 方法可以将 null 转换为空列表?

java - Android API-21 中 DateTimeFormatter 的替代品

windows - 用于循环字符串替换的批处理文件

node.js - 如果在 Git bash (mintty) 中使用 npm 脚本,则没有控制台颜色

Java 分数映射到 SQL Server

java - 为什么Android使用Java概念而不是D语言或C或C++?但是 Chromium 网络浏览器是 C++ 的,它的匹配非常复杂

javascript - React Native 将图像上传到 AWS 服务器不适用于 Android

windows - 可以忽略评论/排除修订的差异工具?