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 Split
{
public static void act( JButton jbtnSqlScriptSplit )
{
jbtnSqlScriptSplit.addMouseListener( new MouseAdapter()
{
@Override
public void mousePressed( MouseEvent e )
{
File origFile;
int fileLength;
if( ( origFile = FileUtil.selectFile( "D:\\" ) ) == null )
{
JOptionPane.showMessageDialog( null, "没选择文件" );
return;
}
try
{
int origFileLength = getFileLength( origFile );
fileLength = origFileLength
/ Integer.parseInt( JOptionPane.showInputDialog( "please input split file count:" ) );
}
catch( Exception e1 )
{
JOptionPane.showMessageDialog( null, "无长度或输入异常" );
return;
}
split( origFile, fileLength );
}
} );
}
protected static int getFileLength( File origFile )
{
BufferedReader reader = null;
int fileLength = 0;
try
{
reader = new BufferedReader( new FileReader( origFile ) );
fileLength = 0;
// 一次读入一行,直到读入null为文件结束
while( reader.readLine() != null )
{
fileLength++;
}
reader.close();
}
catch( IOException e )
{
e.printStackTrace();
}
finally
{
if( reader != null )
{
try
{
reader.close();
}
catch( IOException e1 )
{
}
}
}
return fileLength;
}
private static void split( File origFile, int firstPhase )
{
BufferedReader reader = null;
try
{
System.out.println( "以行为单位读取文件内容,一次读一整行:" );
reader = new BufferedReader( new FileReader( origFile ) );
int i = 0, fileCount = 0;
String tempString = null, useDB = 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( i == 0 )
{
useDB = tempString;
}
System.out.println( tempString );
w.write( tempString.getBytes() );
w.write( "\n".getBytes() );
if( i++ > firstPhase * fileCount && tempString.endsWith( ");" ) )
{
w.flush();
w.close();
newFile = new File( origFile.getAbsolutePath().substring( 0,
origFile.getAbsolutePath().lastIndexOf( "\\" ) )
+ "\\" + firstPartName + ( fileCount++ ) + tailName );
newFile.createNewFile();
w = new FileOutputStream( newFile );
if( i > 1 )
{
w.write( useDB.getBytes() );
w.write( "\n".getBytes() );
}
}
}
w.flush();
w.close();
reader.close();
origFile.delete();
}
catch( IOException e )
{
e.printStackTrace();
}
finally
{
if( reader != null )
{
try
{
reader.close();
}
catch( IOException e1 )
{
}
}
}
}
}
Split
最新推荐文章于 2023-06-06 20:10:20 发布