Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 在eclipse中使用CREATETXT并打包在jar中_Java_Executable Jar_Readfile - Fatal编程技术网

Java 在eclipse中使用CREATETXT并打包在jar中

Java 在eclipse中使用CREATETXT并打包在jar中,java,executable-jar,readfile,Java,Executable Jar,Readfile,我有个问题 对于我的项目的性质,我需要读取一个txt文件,打包在一个JAR中,这是我的情况: 我在eclipse中有一个项目,我在其中创建了一个txt文件:project->new->new txt file 在此文件中,我将存储我的登录设置 我想创建一个可执行的JAR,当我执行这个JAR时,我想使用存储在txt文件中的数据 这个Jar应该尽可能独立,因为我需要在许多不同的地方和情况下执行它,我只能有一个文件(Jar),这个txt应该放在Jar中 我该怎么做 我希望这个问题以前没有得到回答(我一

我有个问题

对于我的项目的性质,我需要读取一个txt文件,打包在一个JAR中,这是我的情况:

我在eclipse中有一个项目,我在其中创建了一个txt文件:project->new->new txt file 在此文件中,我将存储我的登录设置

我想创建一个可执行的JAR,当我执行这个JAR时,我想使用存储在txt文件中的数据

这个Jar应该尽可能独立,因为我需要在许多不同的地方和情况下执行它,我只能有一个文件(Jar),这个txt应该放在Jar中

我该怎么做


我希望这个问题以前没有得到回答(我一直在寻找答案,但没有找到任何答案),如果是重复的问题,我提前道歉。

您不能写入存储在JAR文件中的文件

您可以将JAR文件和文本文件存储在一起,并使用批处理文件(.bat)以文件名作为参数来执行JAR

这样,您将只有一个文件要执行

这可以完成任务吗?

您应该查看核心Java中的“Class.getResourceAsStream(字符串名称)”。您可以使用它从应用程序中打开一个文本文件(或任何其他类型的文件),打包在一个jar或任何东西中


请注意,如果您在文件中存储敏感信息,任何拥有jar的人都可以查看它;如果不想查看信息,则需要对其进行加密。

您可以通过

getClass().getProtectionDomain().getCodeSource().getLocation()


从这里创建一个具有此位置的jar文件,获取txt JarEntry并通过FileOutputStream将其写出。然后您可以阅读您的文件内容。

非常感谢您的所有回答,在en,我已通过nex指令解决了此问题编号:

in=new BufferedReader(新的InputStreamReader(AppTask.class.getClassLoader().getResourceAsStream(AppData.SettingsFile))

它很好用。
再次感谢,再见

谢谢你的评论,但是jar将由remote执行,我不知道jar将存储在哪里,因为我不想拥有比jar更多的文件,我真的不知道我是否可以,此外,我将来不会是管理这个jar的人,所以可能这个文件带有设置,将丢失或是其他什么,一个选项是将其存储为程序中硬编码的变量,但这应该是“最后一个选项”(我对java非常陌生,我不知道是否还有更多选项)"好的,谢谢,我会尝试一些,不必担心存储的数据只是一些配置,但我会将其保留在代码之外,以便在必要时进行编辑而不编辑代码。请确保接受您认为是问题“最佳”答案的答案,方法是单击该答案文本左侧的复选标记。这是答案的一部分了解StackOverflow的工作原理,从而使您更有可能在以后提出的其他问题中获得答案。