package net.tqm.view.action;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import net.tqm.view.FileUtil;
public class Filter
{
public static void act(JButton jbtnDataFilter)
{
jbtnDataFilter.addMouseListener( new MouseAdapter()
{
@Override
public void mousePressed( MouseEvent e )
{
File origFile;
String senseString;
if( ( origFile = FileUtil.selectFile( "D:\\" ) ) == null )
{
JOptionPane.showMessageDialog( null, "没选择文件" );
return;
}
if( ( senseString = JOptionPane.showInputDialog( "please input senseString :" ) ) == null )
{
JOptionPane.showMessageDialog( null, "无滤词" );
return;
}
fileFilter( origFile, senseString );
}
} );
}
private static void fileFilter( File origFile, String senseString )
{
BufferedReader reader = null;
try
{
System.out.println( "以行为单位读取文件内容,一次读一整行:" );
reader = new BufferedReader( new FileReader( origFile ) );
int fileCount = 0;
String tempString = null, tailName = "";
String[] splitName = origFile.getName().split( "-" );
for( int j = 3; j < splitName.length; j++ )
{
tailName = tailName + "-" + splitName[j];
}
String firstPartName = splitName[0] + "-" + splitName[1] + "-" + splitName[2];
File newFile = new File( origFile.getAbsolutePath().substring( 0,
origFile.getAbsolutePath().lastIndexOf( "\\" ) )
+ "\\" + firstPartName + ( fileCount++ ) + tailName );
FileOutputStream w = new FileOutputStream( newFile );
// 一次读入一行,直到读入null为文件结束
while( ( tempString = reader.readLine() ) != null )
{
if( !tempString.contains( senseString ) )
{
w.write( tempString.getBytes() );
w.write( "\n".getBytes() );
}
}
w.flush();
w.close();
reader.close();
}
catch( IOException e )
{
e.printStackTrace();
}
finally
{
if( reader != null )
{
try
{
reader.close();
}
catch( IOException e1 )
{
}
}
}
}
}