当前位置:编程学习 > JAVA >>

下面这段代码 读取保存之后没有换行 大神们怎么解决啊

package textReader;

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.jsoup.Jsoup;
public class Demo13_6 {

public static void main(String[] args) {
// TODO Auto-generated method stub

BufferedReader br=null;
BufferedWriter bw=null;
try { 
//先创建FileReader 对象
FileReader fr=new FileReader("d:\\3.txt");
br=new BufferedReader(fr);

//创建FileWriter对象
//FileWriter fw=new FileWriter("d:\\test2.txt");
 bw = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream("d:\\test9.txt"), "gbk"));


//循环读取
String s=null;
String str="";
int t=10;

while((s=br.readLine())!=null)
{
//System.out.print(s);
//输出到磁盘
t--;
if(t>0)
{
str+=s+"\n";
// bw.write(str+"\r\n");
}
else{
t=10;
str = getText(str+"\r\n");
bw.write(str);
str=null;
}
}
str = getText(str+"\r\n");
bw.write(str);

} catch (Exception e) {
// TODO: handle exception
}finally{
try {
br.close();
bw.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}

public static String getText(String s)
{

String htmlStr = s; // 含html标签的字符串
String textStr = "";
java.util.regex.Pattern p_script;
java.util.regex.Matcher m_script;
java.util.regex.Pattern p_style;
java.util.regex.Matcher m_style;
java.util.regex.Pattern p_html;
java.util.regex.Matcher m_html;
java.util.regex.Pattern p_cont1; 
java.util.regex.Matcher m_cont1; 
java.util.regex.Pattern p_cont2; 
java.util.regex.Matcher m_cont2;   
try {    String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>    // } 
String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>    // }  
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式   
String regEx_cont1 = "[\\d+\\s*`~!@#$%^&*\\(\\)\\+=|{}':;',\\[\\].·<>/?~!@#¥%……&*()——+|{}【】‘:”“’_]"; // 定义HTML标签的正则表达式 
String regEx_cont2 = "[\\w[^\\W]*]"; // 定义HTML标签的正则表达式[a-zA-Z]  
p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);   
m_script = p_script.matcher(htmlStr);   
htmlStr = m_script.replaceAll(""); // 过滤script标签
p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);  
m_style = p_style.matcher(htmlStr);  
htmlStr = m_style.replaceAll(""); // 过滤style标签  
p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);   
m_html = p_html.matcher(htmlStr);   
htmlStr = m_html.replaceAll(""); // 过滤html标签  
p_cont1 = Pattern.compile(regEx_cont1,Pattern.CASE_INSENSITIVE);  
m_cont1 = p_cont1.matcher(htmlStr); 
htmlStr = m_cont1.replaceAll(""); // 过滤其它标签  
p_cont2 = Pattern.compile(regEx_cont2, Pattern.CASE_INSENSITIVE);   
m_cont2 = p_cont2.matcher(htmlStr); 
htmlStr = m_cont2.replaceAll(""); // 过滤html标签 
textStr = htmlStr; 
// textStr = textStr.replaceAll("//?", "");
} catch (Exception e) 
{    
System.err.println("Html2Text:" + e.getMessage());   

}   return textStr;// 返回文本字符串
}
}
换行  html  提取  保存   --------------------编程问答-------------------- 加换行符了吗 --------------------编程问答-------------------- 看上去好像你是要过滤掉html标签,这个需求,java的某个包应该提供的吧。楼下说一下是哪个包? --------------------编程问答-------------------- java可能没有,php有这么个函数。
那你为什么要一行一行的呢? --------------------编程问答--------------------

 else{
                    t=10;
                    str = getText(str);
                    str = str+"\r\n";
                    bw.write(str);
                    str=null;
                }       

说不定你把换行符号给replace掉了。 --------------------编程问答--------------------
引用 3 楼 jdgdf566 的回复:
java可能没有,php有这么个函数。
那你为什么要一行一行的呢?


源文件是一行一行的啊 --------------------编程问答--------------------
引用 4 楼 lishikai500 的回复:

 else{
                    t=10;
                    str = getText(str);
                    str = str+"\r\n";
                    bw.write(str);
                    str=null;
                }       

说不定你把换行符号给replace掉了。
有可能,可是我看不出来啊 --------------------编程问答--------------------
引用 1 楼 baohuan_love 的回复:
加换行符了吗
加了 --------------------编程问答-------------------- 把所有的
            bw.write(str);
都改成bw.write(str + "\r\n"); --------------------编程问答--------------------
引用 6 楼 nupter_Zyc 的回复:
Quote: 引用 4 楼 lishikai500 的回复:


 else{
                    t=10;
                    str = getText(str);
                    str = str+"\r\n";
                    bw.write(str);
                    str=null;
                }       

说不定你把换行符号给replace掉了。
有可能,可是我看不出来啊

看不出来,试试就好了啊 --------------------编程问答--------------------
引用 9 楼 lishikai500 的回复:
Quote: 引用 6 楼 nupter_Zyc 的回复:

Quote: 引用 4 楼 lishikai500 的回复:


 else{
                    t=10;
                    str = getText(str);
                    str = str+"\r\n";
                    bw.write(str);
                    str=null;
                }       

说不定你把换行符号给replace掉了。
有可能,可是我看不出来啊

看不出来,试试就好了啊


String regEx_cont1 = "[\\d+\\s*`~!@#$%^&*\\(\\)\\+=|{}':;',\\[\\].·<>/?~!@#¥%……&*()——+|{}【】‘:”“’_]"; 
可能是这句有问题 --------------------编程问答-------------------- 1,匹配字符串的问题检查一下
2,windows下面换行是\r\n
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,