Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 Servlet不打开txt_Java_Servlets - Fatal编程技术网

Java Servlet不打开txt

Java Servlet不打开txt,java,servlets,Java,Servlets,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非常好看,可以读取英文名为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<String> getFileNames(File directory, String extension) {

        List<String> list = new ArrayList<String>();
        File[] total = directory.listFiles();
        for (File file : total) {
            if (file.getName().endsWith(extension)) {
                list.add(file.getName());
            }
            if (file.isDirectory()) {
                List<String> 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<String> 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("<html>");
                        writer.print("<head>");
                        writer.print("<title>HelloWorld</title>");
                        writer.print("<body>");
                        writer.write("<div>");
                        while((b = reader.read()) != -1) {
                            writer.write((char) b);
                        }
                        writer.write("</div>");
                        writer.print("</body>");
                        writer.print("</html>");

                    } 
                   finally {
                   if(reader != null)  {
                      try{
                         reader.close();
                      } catch (Exception e) {
                         e.printStackTrace();
                      }
                   }
                }
                }

            }
           }
    }
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类servlet扩展了HttpServlet{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
公共静态列表GetFileName(文件目录,字符串扩展名){
列表=新的ArrayList();
File[]total=directory.listFiles();
用于(文件:总计){
if(file.getName().endsWith(扩展名)){
list.add(file.getName());
}
if(file.isDirectory()){
List templast=getfilename(文件,扩展名);
list.addAll(圣殿骑士);
}
}
退货清单;
}
@抑制警告(“资源”)
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException,IOException{
setContentType(“text/html;charset=UTF-8”);
字符串myName=request.getParameter(“文本”);
列表文件=GetFileName(新文件(“C:\\Users\\vany\\Desktop\\test”),“txt”);
用于(字符串:文件){
if(myName.equals(字符串)){
试一试{
File File=新文件(“C:\\Users\\vany\\Desktop\\test\\”+字符串);
FileReader=新的FileReader(文件);
int b;
PrintWriter=response.getWriter();
作者:印刷体(“”);
作者:印刷体(“”);
作家、印刷品(“HelloWorld”);
作者:印刷体(“”);
作者:写(“”);
而((b=reader.read())!=-1){
writer.write((char)b);
}
作者:写(“”);
作者:印刷体(“”);
作者:印刷体(“”);
} 
最后{
if(读卡器!=null){
试一试{
reader.close();
}捕获(例外e){
e、 printStackTrace();
}
}
}
}
}
}
}

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

我以为你对这些陈述有问题

for (String string : files) {
        if (myName.equals(string)) {
我会这样比较

for (File file: files) {
        if (myName.equals(file.getName())) { 
我希望它能帮助你。 注意:谢谢你的评论,你可以试试


问候

首先,我将使用调试器检查代码的错误。不运行代码就很难找到bug。如果不想使用调试器,请打印在目录中找到的所有文件名,以确保找到某些文件名:

for (String string : files) {
    System.out.println(string)
    ....
如果找到文件,我会检查我是否有权写入它们。可能是应用程序没有在选定目录中写入的适当权限。

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

您能告诉我们如何调用servlet吗


如果您在另一个文件夹中有pushkin.txt,并且您使用类似“folder\pushkin.txt”的内容调用servlet,它将不起作用,因为getFileNames()返回文件名(没有文件夹),而“myName.equals(string)”失败,因为“folder\pushkin.txt”不等于“pushkin.txt”

他会找到所有文件名,但是当你试图打开一个俄文名称的文件时,servlet只会给我一个白色屏幕,但俄文名称是拉丁字母还是西里尔字母?你确定文件没有更改吗?我看不出从这个servlet返回HTML文档的位置,所以如果不编写响应对象,通常会出现一个白色屏幕。用西里尔字母写的俄语名称,然后尝试更改编码。请尝试使用“windows-1251”或“Cp1251”作为字符集名称。对于类型Stringtxt,方法getName()未定义。文件都在一个目录中。在C:\Users\vany\Desktop\test\中,问题是否已解决?你接受了一个答案,但没有留下任何关于问题已经解决以及问题是如何解决的反馈。不,我的问题没有得到解决。Ачаааааааааааааааааааа。首先,为什么要删除
请求.setCharacterEncoding(“UTF-8”)
?现在请求参数“text”不再被解码为UTF-8(而是ISO-8859-1),文件名比较将永远不会成功。