java.io.FileNotFoundException--没有那个文件或目录! 项目打成jar,在liunx上提示找不到文件的解决方案

2 篇文章 0 订阅
2 篇文章 0 订阅

框架:nutzboot

 

最近公司要再平台上搞点数据,大概十几万吧,但是java读取那么大的数据的时候,会造成oom,所以我把文件分成4份,循环跑。这不是今天的重点

今天重点是当我在工具或者jar包在windows上跑的时候一切正常。但是在liunx服务器上就会报错 :

我是这样写的:

 

  File file = new File(files);
  FileInputStream fis = new FileInputStream(file);

所以猜想win和liunx机制不一样吧(windows亲民,liunx特殊,高级)

 

 

于是抱着尝试的态度直接用流读!

InputStream inputStream = this.getClass().getResourceAsStream(files);

当然 文件流本就来就是继承InputStream的 

 

然后,完美解决,其他代码不用动,excel的工具类都是保持原样

虽然不是spring,但是道理是一样的,只要你能在win读取这个文件,然后把方式换成这样就可以!因为这个东西是java的!

如果是spring(boot) 路径可能要变下,加个 classpath:/ (盲猜,具体好像spring有自带的)

OK  解决!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "java.io.filenotfoundexception" 是 Java 编程语言中的一种异常,表示在程序中不到指定的文件。当程序尝试打开一个不存在的文件或访问一个不存在的文件路径时,会抛出这个异常。 ### 回答2: java.io.FileNotFoundExceptionJava中的一个异常类,表示在尝试打开或读取文件时,不到指定的文件。通常在使用文件操作的时候会经常遇到这个异常。 当程序遇到FileNotFoundException时,通常会报出相应的信息,指出哪个文件不到,以及具体的原因。通常是文件名拼写错误、文件路径错误、文件被删除或移动了、权限问题等等。 为了解决FileNotFoundException,需要仔细检查代码中文件路径是否正确,并确认文件是否存在。在使用绝对路径时,需要保证路径的正确性;在使用相对路径时,需要注意当前工作目录的问题。如果程序运行时没有足够的权限读取文件,需要修改文件权限或在代码中使用管理员权限来操作文件。 在处理FileNotFoundException时,还需要注意程序的异常处理机制。对于这种IO异常,通常应该使用try...catch语句来捕捉并处理异常,以避免程序终止或出现异常信息。同时,也应该输出合适的错误信息,以便调试和修复问题。 总之,处理FileNotFoundException需要仔细检查程序的文件路径和权限,并使用合适的异常处理机制来保证程序的稳定和正确性。 ### 回答3: Java中的FileNotFoundException文件到异常)是一个运行时异常,它表示在尝试访问不存在的文件时发生了问题。 当Java程序无法到指定的文件时,就会发生这个异常。在尝试使用Java IO库读取或写入文件时,如果指定的文件路径无效或文件不存在,则会抛出FileNotFoundException。 在Java中,可以使用File类来表示一个文件目录,并使用FileInputStream和FileOutputStream来读取和写入文件的内容。但是在进行这些操作之前,必须确保文件路径是正确的,否则就会导致FileNotFoundException错误。 这个异常通常是由以下几种情况引起的: 1.文件名或路径错误:这可能是由于指定的文件名或路径不正确而引起的。在读取或写入文件时,请确保文件路径和文件名正确。 2.文件不存在:当尝试访问不存在的文件时,就会抛出FileNotFoundException。如果文件存在,但另一个应用程序正在使用该文件,则可能需要等待一段时间。 3.权限问题:文件系统中的文件目录可能受到保护,需要特殊权限才能访问它们。如果您尝试访问没有权限的文件,则会出现FileNotFoundException错误。 为了避免出现FileNotFoundException错误,您应该始终检查文件是否存在,并确保指定的文件名和路径是正确的。如果您不确定文件路径或文件名,请使用Java File类中的exists()方法来检查文件是否存在。如果文件存在,则可以安全地读取或写入它。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值