如何从Java中不在项目内的路径打开文件?
我有一个关于Java和/或Eclipse的问题。我有一个程序可以执行以下操作:如何从Java中不在项目内的路径打开文件?,java,eclipse,path,Java,Eclipse,Path,我有一个关于Java和/或Eclipse的问题。我有一个程序可以执行以下操作: 打开用户可以在其中搜索文件夹的UI 如果选中文件夹,则绝对路径将传递到主文件夹 所选路径中几乎没有文件夹 有一些函数可以读取数据并使用读取的数据创建新的excel 我得到的路径是正确的 一般来说,这个程序是有效的。。。但它只有在以下情况下才有效: 从用户选择的路径是我运行程序的项目文件夹中的一个文件夹 或 正在读取的文件的名称在项目文件夹中指定。我的意思是:如果文件test.vcc在包中,那么如果有一个文件名为t
- 打开用户可以在其中搜索文件夹的UI
- 如果选中文件夹,则绝对路径将传递到主文件夹
- 所选路径中几乎没有文件夹
- 有一些函数可以读取数据并使用读取的数据创建新的excel
- 我得到的路径是正确的强>
因此,Java或Eclipse似乎无法打开不在项目内部或项目中命名的路径-这是真的吗? 运行该程序会为每个没有特别命名的文件或项目中的文件提供NullPointerException 真诚地褪色
更新 好吧,我已经注意到我确实做错了什么 我将用户选择的整个文件路径替换为“\”,这显然意味着它不会关心文件路径,而是将其替换为。\n而不是真正选择路径
String filePathS = filePath.replace(FILEPATH, ".\\");
当我使用它的工作,因为它可以找到项目文件夹中的文件。因此,在看到这一点后,我选择了用户选择的真实路径
基本上是这样的:
String filePathSX = filePath.replace("/", "\\");
还是这个
String filePathSX = filePath.replace("\\", "/");
它给我的路径如下:C:\Users\me\dev\foldername\part\test.txt或类似于C:/Users/me/dev/foldername/part/test.txt
我可以检查目标文件test.txt是否确实存在,路径是否正确。但当它试图对该文件执行某些操作时,它会给我一个NullPointerExection
如果我将整个路径的replace函数保留为.\,那么它将使用包中的test.txt文件,并且运行时不会出现任何问题
所以我认为我以错误的方式访问了文件。如果用户选择了某个内容,那么windows上的路径应该是什么样子c/user/…或c\user…
因为这两种方法对我都不起作用。这不是真的
File f=新文件(“C:\\path\\to\\your\\File”);
//在此处执行一些检查,以确保桌面确实可以打开它
Desktop=Desktop.getDesktop();
桌面。打开(f);
编辑:如果您正在获取NPE,则您的路径不包含任何文件,请尝试在该位置创建具有特定名称的文件,然后在文件资源管理器中打开该文件以查看其实际位置
因此,Java或Eclipse似乎无法打开不在项目内部或项目中命名的路径——这是真的吗
是的,也不是。但大多数情况下不是这样的
一些操作系统(尤其是Mac操作系统)有一个安全策略框架,除非您明确允许,否则拒绝对所有应用程序进行任何文件访问。如果你在mac电脑上,那听起来可能是罪魁祸首
除此之外,答案是否定的:这是不正确的
如果不是Mac OS的问题,你必须问一个新问题并提供一系列细节:例如,显示代码,显示打印路径的结果,以及显示磁盘上的实际文件结构
NullPointerException听起来更奇怪,因此可能您的代码有问题。在java中的文件上没有
.open()
函数。您不能直接从文件打开它,我的坏消息。你需要从桌面打开它,无论如何,如果你想用一个特定的程序打开它,这在Windows上不是一个好主意,但在linux上也不起作用。。。。这真的很奇怪,解释一切需要2天时间:D无论如何,我可能回到这里。听起来OP可能试图将一个文件加载到一个处理excel文件的库中,但在尝试打开excel数据对象之前,他可能没有正确初始化excel数据对象。不,这不是真的。我有很多在Eclipse中运行的Java程序,它们可以在任何地方打开文件。向我们展示一个我们无法帮助而不知道您是如何试图读取文件的,其他任何东西都只是猜测。请编辑您的问题,向我们准确显示您是如何尝试将文件读入应用程序的,以及您是如何尝试使用所选excel/电子表格库打开该文件或从中创建excel文件的。您还可以检查该文件是否存在,如图所示:@sorifiend问题是该文件存在并已被找到,但如果该文件位于项目包内,它只会不显示NullPointerException-这很奇怪-我将尝试修复它,可能在某个地方出现逻辑错误哦,您是否正在尝试加载打包到应用程序中的内部资源?这是一个完全不同的问题,对于新玩家来说是一个陷阱,因为它通常在eclipse中工作,但一旦编译并运行代码,它就会失败,因为资源或内部文件被打包到jar文件中,并且需要使用资源加载程序,而不是绝对的文件路径。请参阅此处: