我真的无法解决问题所在。 我想将字符打印到文本文件,然后使用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();
}
但我的文件正在引用除了最后一个字符之外的所有内容。 Eg.input =
: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”没有打印出来。
提前致谢
答案 0 :(得分:2)
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
正如所料。
(不要像这样处理你的IOException
- 关闭你的读者和作者 - 这只是为了演示!)
编辑现在您的代码甚至无法编译(两个名为fileIn
的变量?)!
即使在运行您现在提到的servlet代码时,我也无法重现您的问题,并且输出正如您所期望的那样。所以这就是我放弃了。我开始怀疑最终;
不在您的源文件中,或者您的应用正在进行更多处理,而您没有向我们展示。
答案 1 :(得分:1)
尝试使用flush()或关闭()打印作者。
可能最好逐行阅读,使用String.replace()
替换字符答案 2 :(得分:0)
运行while循环到文件大小
int fileSize=file.length();
while(fileSize>0)
{
//do your task of reading charcter and printing it or whatever you want
fileSize--;
}