Servlet无法打开txt

Servlet非常好看并且读取具有英文名称的文件,例如hello.txt。 它不想读取具有俄语名称的文件,例如pushkin.txt。 有人能帮忙解决这个问题吗?

这是代码:

import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class servlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public static List getFileNames(File directory, String extension) { List list = new ArrayList(); File[] total = directory.listFiles(); for (File file : total) { if (file.getName().endsWith(extension)) { list.add(file.getName()); } if (file.isDirectory()) { List tempList = getFileNames(file, extension); list.addAll(tempList); } } return list; } @SuppressWarnings("resource") protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html; charset=UTF-8"); String myName = request.getParameter("text"); List files = getFileNames(new File("C:\\Users\\vany\\Desktop\\test"), "txt"); for (String string : files) { if (myName.equals(string)) { try { File file = new File("C:\\Users\\vany\\Desktop\\test\\" + string); FileReader reader = new FileReader(file); int b; PrintWriter writer = response.getWriter(); writer.print(""); writer.print(""); writer.print("HelloWorld"); writer.print(""); writer.write("
"); while((b = reader.read()) != -1) { writer.write((char) b); } writer.write("
"); writer.print(""); writer.print(""); } finally { if(reader != null) { try{ reader.close(); } catch (Exception e) { e.printStackTrace(); } } } } } } }

问题是相关的,问题没有解决

我以为你的陈述有问题

 for (String string : files) { if (myName.equals(string)) { 

我会用这种方式比较

 for (File file: files) { if (myName.equals(file.getName())) { 

我希望它对你有所帮助。 注意:感谢您的评论,您可以尝试一下。

问候

首先,我会使用调试器来检查该代码有什么问题。 没有运行代码就很难找到错误。 如果您不想使用调试器打印出目录中找到的所有文件名,以确保找到一些文件名:

 for (String string : files) { System.out.println(string) .... 

如果找到文件,我会检查我是否有权写信给他们。 可能是应用程序没有适当的权限来写入所选目录。

文件“hello.txt”和pushkin.txt是否直接在“C:\ Users \ vany \ Desktop \ test \”文件夹中? 或者是来自“C:\ Users \ vany \ Desktop \ test \”的另一个文件夹中的pushkin.txt文件?

你能告诉我们你如何调用servlet吗?

如果你在另一个文件夹中有pushkin.txt而你用类似“folder \ pushkin.txt”的东西调用servlet它将无法工作,因为getFileNames()返回文件名(没有文件夹)和“myName.equals(string)”失败“folder \ pushkin.txt”不等于“pushkin.txt”