gpt4 book ai didi

java - 在java中读取/复制动态Web项目中的文件

转载 作者:行者123 更新时间:2023-11-30 11:13:09 24 4
gpt4 key购买 nike

我使用 JSP/Servlet 和 Eclipse 创建了一个动态 Web 应用程序项目。我想在同一个地方创建一个“db.xls”文件的副本。

我尝试创建“db.xls”的副本,该副本将命名为 out.xls 但它不会。这些文件应位于同一文件夹"file"内。我的代码编译,db.xls 被正确读取,但文件 out.xls 没有创建。

我的方法有什么问题吗?请帮忙!

public void readExcel()
{
try{

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url1 = classLoader.getResource("");

// read db.xls
wbook = Workbook.getWorkbook(new File(url1.getPath()+"/db.xls"));

// create a copy of db.xls nammed out.xls
wwbCopy = Workbook.createWorkbook(new File(url1.getPath()+"/out.xls"), wbook);
shSheet = wwbCopy.getSheet(0);
}
catch(Exception e)
{
e.printStackTrace();
}
}

enter image description here

我将文件“db.xls”移入 WEB-INF 并使用 getServletContext().getRealPath("/WEB-INF") 但输出文件“out.xls”仍未创建。

public void readExcel()
{
try{

// ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// URL url1 = classLoader.getResource("");

String tomcatRoot = getServletContext().getRealPath("/WEB-INF");

wbook = Workbook.getWorkbook(new File(tomcatRoot+"/db.xls"));
wwbCopy = Workbook.createWorkbook(new File(tomcatRoot+"/out.xls"), wbook);
shSheet = wwbCopy.getSheet(0);
}
catch(Exception e)
{
e.printStackTrace();
}
}

最佳答案

System.out 你的文件,你会看到哪里出了问题

System.out.println(new File(tomcatRoot+"/db.xls").getAbsolutePath());
System.out.println(new File(tomcatRoot+"/out.xls").getAbsolutePath());

您希望该文件是您的项目目录,但它不是从该位置读取/写入/写入该位置,因为您已将 files forlder 设置为 eclipse 中的 source 文件夹,所以它是我们的一部分,你可以从资源中读取类路径,即使用 classloader 和 getResource/getResourceAsStream 但你不能也不不应该写入它,因为有几个原因,大多数显而易见的是,您的 Web 应用程序可能无法从 war 文件中解压缩。

事实上,你不知道你在哪里读/写你的文件。

您可以将您的文件与 war 文件打包并从中读取,这是正确的。但是对于编写最好的是在文件系统上有一个明确的位置,您可以在其中编写输出文件。检查这个answer了解如何使用上下文初始化参数来实现它

关于java - 在java中读取/复制动态Web项目中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26528519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com