从一个文件中读取文件内容,将文本内容。每200字到300字之间的第一个句号后面加一个换行。再写入另一个文件中。<
从一个文件中读取文件内容,将文本内容。每200字到300字之间的第一个句号后面加一个换行。再写入另一个文件中。<
上面我给的程序不对
这样
package test2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedWriter mBufWriter=null;
FileWriter fileWriter = null;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("D:\\a.txt"));
fileWriter = new FileWriter("D:\\filetest.txt",true);
mBufWriter = new BufferedWriter(fileWriter);
String line ="";
while((line = reader.readLine()) != null){
String regex = "\\G.{29}.*?。(?!”)";
Matcher m = Pattern.compile(regex).matcher(line);
if(!m.find()){
mBufWriter.write(line);
mBufWriter.newLine();
}else{
m.reset();
while(m.find()){
String s = m.group();
mBufWriter.write(s);
mBufWriter.newLine();
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(mBufWriter!=null){try {
mBufWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
}
}
遇到。”的时候,就不加换行了。请问应该怎么写。
String regex = "\\G.{29}.*?。(?!”)";
非常非常感谢!请问原来文本中带的换行就不见了。合成一行了。请问这个怎么解决。
学习了。谢谢分享
package test2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedWriter mBufWriter=null;
FileWriter fileWriter = null;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("D:\\a.txt"));
fileWriter = new FileWriter("D:\\filetest.txt",true);
mBufWriter = new BufferedWriter(fileWriter);
String line ="";
while((line = reader.readLine()) != null){
String regex = "\\G.{29}.*?。(?!”)";
Matcher m = Pattern.compile(regex).matcher(line);
if(!m.find()){
mBufWriter.write(line);
mBufWriter.newLine();
}else{
while(m.find()){
String s = m.group();
mBufWriter.write(s);
mBufWriter.newLine();
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(mBufWriter!=null){try {
mBufWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
}
}
package test2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedWriter mBufWriter=null;
FileWriter fileWriter = null;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("D:\\a.txt"));
fileWriter = new FileWriter("D:\\filetest.txt",true);
mBufWriter = new BufferedWriter(fileWriter);
String str = "";
String line ="";
while((line = reader.readLine()) != null){
str += line;
}
String regex = "\\G.{29}[^。]*?。";
Matcher m = Pattern.compile(regex).matcher(str);
while(m.find()){
String s = m.group();
mBufWriter.write(s);
mBufWriter.newLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(mBufWriter!=null){try {
mBufWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
}
}
用DataInputStream的readChar
数字符数+判断字符是否为句号
完成你的功能~
每200字到300字之间的第一个句号后面加一个换行
打开文件,循环读取内存,新建文件,依次写到新的文件(判断是否符合你的条件,并进行处理);关闭文件;
package test2;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedWriter mBufWriter=null;
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("D:\\filetest.txt",true);
mBufWriter = new BufferedWriter(fileWriter);
String str = "心念及此,楚流烟心下已然明白眼前的这名应天水师将领求战心切。若是全力压制,反而容易激出难以逆料的变化来,还不如顺水推舟,就此答应了此人的要求,买一个人情给这名应天水师将领,也好以此掌控水师部众。“也好,将军既然主动请战,心迹昭昭,足见是一片血诚。只是眼下的战局虽是对于我应天水师颇有不利,不过有将军这等急公好义,勇于任事的军中柱石,国之勋臣在。哪怕汉王陈友谅麾下的汉军水师再厉害数倍,我等也可将其全力攻伐下去。";
String regex = "\\G.{29}[^。]*?。";
Matcher m = Pattern.compile(regex).matcher(str);
while(m.find()){
String s = m.group();
mBufWriter.write(s);
mBufWriter.newLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(mBufWriter!=null){try {
mBufWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
}
}
没有。这是用这个当例子。怕没看懂我的意思。
有这么一个问题。
就是我有一篇小说。没有分行。如下:
心念及此,楚流烟心下已然明白眼前的这名应天水师将领求战心切。若是全力压制,反而容易激出难以逆料的变化来,还不如顺水推舟,就此答应了此人的要求,买一个人情给这名应天水师将领,也好以此掌控水师部众。“也好,将军既然主动请战,心迹昭昭,足见是一片血诚。只是眼下的战局虽是对于我应天水师颇有不利,不过有将军这等急公好义,勇于任事的军中柱石,国之勋臣在。哪怕汉王陈友谅麾下的汉军水师再厉害数倍,我等也可将其全力攻伐下去。
我希望得到的结果: 超过30字后的第一个句号后加一个换行。 换行还,从换行后再算30字后的第一个句号后再加一个换行。
结果:
心念及此,楚流烟心下已然明白眼前的这名应天水师将领求战心切。
若是全力压制,反而容易激出难以逆料的变化来,还不如顺水推舟,就此答应了此人的要求,买一个人情给这名应天水师将领,也好以此掌控水师部众。
“也好,将军既然主动请战,心迹昭昭,足见是一片血诚。只是眼下的战局虽是对于我应天水师颇有不利,不过有将军这等急公好义,勇于任事的军中柱石,国之勋臣在。
哪怕汉王陈友谅麾下的汉军水师再厉害数倍,我等也可将其全力攻伐下去。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
public class TestTXT {
/**
*
* @param args
*/
public static void main(String[] args) {
try {
//TestTXT.loadSomthing();
TestTXT.WriteSomthing();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @throws IOException
*/
public static void WriteSomthing() throws IOException
{
BufferedWriter mBufWriter=null;
//写入文件流
FileWriter fileWriter = new FileWriter("src/test.txt",true);
mBufWriter = new BufferedWriter(fileWriter);
//p判断文件是否有内容
File file=new File("src/test.txt");
Reader reader=null;
reader=new InputStreamReader(new FileInputStream(file));
if (reader.read()>0) {
System.out.println("have");
mBufWriter.newLine();
}else {
System.out.println("have no");
}
mBufWriter.write("sssssss撒旦发射");
//让写入文件后进行换行
mBufWriter.newLine();
mBufWriter.flush();
mBufWriter.close();
}
/**
*
* @throws IOException
*/
public static void loadSomthing() throws IOException
{
File file=new File("src/test.txt");
Reader reader=null;
try {
reader=new InputStreamReader(new FileInputStream(file));
int indexBs;
while ((indexBs=reader.read())!=-1) {
//type elem = (type) en.nextElement();
//这里你可以换成你自己判断文件300字或者200字的 语句
System.out.print((char)indexBs);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}