Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 PrintWriter打印字符未显示最后一个字符_Java_Servlets - Fatal编程技术网

Java PrintWriter打印字符未显示最后一个字符

Java PrintWriter打印字符未显示最后一个字符,java,servlets,Java,Servlets,我真的不明白问题出在哪里。 我想将字符打印到一个文本文件中,并使用printWriter执行同样的操作。 如果文件中有“;”,我想用新行替换它,这就是我要做的 public static void downloadFile_txt(String sourceFilePathName, String contentType, String destFileName, HttpServletResponse response) throws IOException, ServletException

我真的不明白问题出在哪里。 我想将字符打印到一个文本文件中,并使用printWriter执行同样的操作。 如果文件中有“;”,我想用新行替换它,这就是我要做的

public static void downloadFile_txt(String sourceFilePathName, String contentType, String destFileName, HttpServletResponse response) throws IOException, ServletException
 {
     File file = new File(sourceFilePathName);
     //FileInputStream fileIn = new FileInputStream(file);
     FileReader fileIn = new FileReader(file); 
     long fileLen = file.length();
     response.setContentType(contentType);
     response.setContentLength((int)fileLen);

     response.setHeader("Content-Disposition", String.valueOf((new  StringBuffer("attachment;")).append("filename=").append(destFileName)));

     PrintWriter pw =  response.getWriter();


     // Loop to read and write bytes.
     int c=-1;      
     while ((c = fileIn.read()) != -1)
     {

         if(c!=59)
         {
              pw.print((char)c);
         }
         else
         {
              pw.println();
         }
     }
     pw.flush();
     pw=null;        
     fileIn.close();        
}
但我的档案里除了最后一个字符以外什么都有。 输入=

:00004000,FFAD,2 Byte Ch;
:0000FFBD,FFBE,2 Byte Ch;
:0000FFBF,FFFF,2 Byte Ch;
我得到的输出

:00004000,FFAD,2 Byte Ch
:0000FFBD,FFBE,2 Byte Ch
:0000FFBF,FFFF,2 Byte C
最后一个“h”没有打印出来

提前感谢

A
pw.flush()可能会帮助您

public class FlushPrintWriter {

    public static void main(String[] args) throws IOException  {
        FileReader fileIn = new FileReader("in.txt");
        FileWriter out = new FileWriter("out.txt");
        PrintWriter pw = new PrintWriter(out);
        int c;        
        while ((c = fileIn.read()) != -1) {
            if(c!=59) {
               pw.print((char)c);
            } else {
               pw.println();
            }
        }
        pw.flush();
    }
}
输出

:00004000,FFAD,2 Byte Ch :0000FFBD,FFBE,2 Byte Ch :0000FFBF,FFFF,2 Byte Ch :00004000,FFAD,2字节Ch :0000FFBD,FFBE,2字节Ch :0000FFBF,FFFF,2字节Ch 正如所料

(不要像这样处理您的
IOException
s,关闭您的读卡器和写卡器-这仅用于演示!)


编辑:现在您的代码甚至没有编译(两个变量称为
fileIn
?)

即使在运行您现在提到的servlet代码时,我也无法重现您的问题,并且输出与您预期的一样。这就是我放弃了。我开始怀疑最后的
不在您的源文件中,或者您的应用程序正在进行更多处理,而您没有向我们展示。

A
pw.flush()可能会帮助您

public class FlushPrintWriter {

    public static void main(String[] args) throws IOException  {
        FileReader fileIn = new FileReader("in.txt");
        FileWriter out = new FileWriter("out.txt");
        PrintWriter pw = new PrintWriter(out);
        int c;        
        while ((c = fileIn.read()) != -1) {
            if(c!=59) {
               pw.print((char)c);
            } else {
               pw.println();
            }
        }
        pw.flush();
    }
}
输出

:00004000,FFAD,2 Byte Ch :0000FFBD,FFBE,2 Byte Ch :0000FFBF,FFFF,2 Byte Ch :00004000,FFAD,2字节Ch :0000FFBD,FFBE,2字节Ch :0000FFBF,FFFF,2字节Ch 正如所料

(不要像这样处理您的
IOException
s,关闭您的读卡器和写卡器-这仅用于演示!)


编辑:现在您的代码甚至没有编译(两个变量称为
fileIn
?)

即使在运行您现在提到的servlet代码时,我也无法重现您的问题,并且输出与您预期的一样。这就是我放弃了。我开始怀疑最后的
不在您的源文件中,或者您的应用程序正在进行更多处理,而您没有显示给我们。

请尝试刷新()或关闭打印程序

可能最好是逐行读取,使用字符串替换字符。替换()

尝试刷新()或关闭打印写入程序


可能最好是逐行读取,使用String.replace()替换字符。

运行while循环直到文件大小

 int fileSize=file.length();
 while(fileSize>0)
 {
    //do your task of reading charcter and printing it or whatever you want
    fileSize--;
 }

运行while循环直到文件大小

 int fileSize=file.length();
 while(fileSize>0)
 {
    //do your task of reading charcter and printing it or whatever you want
    fileSize--;
 }

谢谢你的回复。在while循环之后不久,我正在使用pw.flush()和pw=null。谢谢你的回复。在while loopHi之后不久,我正在使用pw.flush()和pw=null,非常感谢您提供的示例。如果我在控制台中显示它,它会打印相同的内容,但如果我将其写入文本文件,则最后一个字符是missing@mee-不,还是不能重现你的问题!请参阅更新的示例。非常感谢…请查找我使用的已编辑代码。它仍然打印相同的代码:(很抱歉造成混淆,我使用的是fileReader。感谢您的帮助。我会尽力找出问题所在。您好,非常感谢您提供的示例。如果我在控制台中显示它,它会打印相同的内容,但如果我将其写入文本文件,则最后一个字符是missing@mee-不,仍然无法重现您的问题!请参阅更新的示例。非常感谢uch…请找到我使用的已编辑代码。它仍然打印相同的内容:(很抱歉,我使用的是fileReader。感谢您的帮助。我将尝试找出问题所在。