Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java中不在项目内的路径打开文件?_Java_Eclipse_Path - Fatal编程技术网

如何从Java中不在项目内的路径打开文件?

如何从Java中不在项目内的路径打开文件?,java,eclipse,path,Java,Eclipse,Path,我有一个关于Java和/或Eclipse的问题。我有一个程序可以执行以下操作: 打开用户可以在其中搜索文件夹的UI 如果选中文件夹,则绝对路径将传递到主文件夹 所选路径中几乎没有文件夹 有一些函数可以读取数据并使用读取的数据创建新的excel 我得到的路径是正确的 一般来说,这个程序是有效的。。。但它只有在以下情况下才有效: 从用户选择的路径是我运行程序的项目文件夹中的一个文件夹 或 正在读取的文件的名称在项目文件夹中指定。我的意思是:如果文件test.vcc在包中,那么如果有一个文件名为t

我有一个关于Java和/或Eclipse的问题。我有一个程序可以执行以下操作:

  • 打开用户可以在其中搜索文件夹的UI
  • 如果选中文件夹,则绝对路径将传递到主文件夹
  • 所选路径中几乎没有文件夹
  • 有一些函数可以读取数据并使用读取的数据创建新的excel
  • 我得到的路径是正确的
一般来说,这个程序是有效的。。。但它只有在以下情况下才有效:

从用户选择的路径是我运行程序的项目文件夹中的一个文件夹

正在读取的文件的名称在项目文件夹中指定。我的意思是:如果文件test.vcc在包中,那么如果有一个文件名为test.vcc,我可以从桌面打开它


因此,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文件中,并且需要使用资源加载程序,而不是绝对的文件路径。请参阅此处: