package com.spec.extender.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
*
* @author paul
*
*/
public class FileUtil {
/**
*
* @param srcFile
* @return Each element in the returned ArrayList is one line string in the source file.
*/
static public ArrayList<String> writeFileToStringList( String srcFile ) throws IOException{
ArrayList<String> fileContentStrings = new ArrayList<String>();
FileReader fileReader = new FileReader( srcFile );
BufferedReader bufferReader = new BufferedReader( fileReader );
while ( true ){
String oneLine = bufferReader.readLine();
if ( oneLine != null )
fileContentStrings.add( oneLine );
else
break;
}
bufferReader.close();
fileReader.close();
return fileContentStrings;
}
static public String writeFileToString(String srcFile) throws IOException {
ArrayList<String> stringList = writeFileToStringList(srcFile);
Iterator<String> stringIter = stringList.iterator();
StringBuffer fileContent = new StringBuffer();
while (stringIter.hasNext()){
fileContent.append(stringIter.next());
}
return fileContent.toString();
}
static public void cleanRepeatedLine( String srcFile, String tarFile ) throws IOException{
ArrayList<String> fileContentStrings = new ArrayList<String>();
FileReader fileReader = new FileReader( srcFile );
BufferedReader bufferReader = new BufferedReader( fileReader );
String tmp = "";
while ( true ){
String oneLine = bufferReader.readLine();
if ( oneLine != null ){
if ( !tmp.equals( oneLine ) ){
fileContentStrings.add( oneLine );
tmp = oneLine;
}
}else{
break;
}
}
bufferReader.close();
fileReader.close();
writeStringCollectionToFile( fileContentStrings, tarFile );
}
static public void writeStringCollectionToFile(Collection<String> strings, String filePath){
try {
FileWriter writer = new FileWriter( filePath , false );
BufferedWriter bufferWriter = new BufferedWriter(writer);
for ( String s : strings ){
bufferWriter.write( s + "\n" );
}
bufferWriter.flush();
writer.flush();
bufferWriter.close();
writer.close();
} catch (IOException e) {
System.err.println( "\nError of write_to_file [" + filePath + "]: \n" + e );
}
}
/**
* Write the specified text to the specified file at the beginning
* @param file_name
* @param text
* @throws IOException
*/
static public void writeTextToFile( String filePath, String text ) throws IOException{
writeTextToFile( new File( filePath ), text );
}
static public void writeTextToFile( File filePath, String text) throws IOException {
FileWriter writer = new FileWriter( filePath, false );
BufferedWriter bufferWriter = new BufferedWriter(writer);
bufferWriter.write(text);
bufferWriter.flush();
writer.flush();
bufferWriter.close();
writer.close();
}
// append to a file
static public void appendTextToFile( String file_name, String text ) throws IOException{
appendTextToFile( new File( file_name ), text );
}
/**
* @param file
* @param text
* @throws IOException
*/
static public void appendTextToFile( File file, String text ){
try{
FileWriter writer = new FileWriter( file , true );
for ( int i = 0 ; i < text.length(); i++){
int ch = (int)text.charAt( i );
writer.write( ch );
}
writer.write( '\n' );
writer.flush();
writer.close();
}catch(IOException e){
System.err.println( "\nError of append_to_file [" + file + "]: \n" + e );
}
}
static public void appendTextCollectionToFile( String file_name, Collection<Object> texts ) throws IOException{
for ( Iterator<Object> _i = texts.iterator(); _i.hasNext(); ){
String a_text_line = (String)_i.next();
appendTextToFile( file_name, a_text_line );
}
}
static public boolean deleteFile( String file_name ){
return (new File( file_name )).delete();
}
}