Supprimer les tag BOM dans fichier UTF-8
- Détails
- Catégorie : CSHARP NET
- Publié le dimanche 29 janvier 2012 09:59
- Écrit par DOT NET
- Affichages : 261
/*
* Created by SharpDevelop.
* User: hidalgo emmanuel
* Date: 22/04/2008
* Time: 11:01
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
usingSystem;
usingSystem.IO;
namespacedelete_tag_utf8_bom
{
classProgram
{
publicstaticvoidMain(string[] args)
{
if( args.Length ==0){
Console.WriteLine( "Spécifier le chemin du dossier à scanner !!" );
return;
}
if( !Directory.Exists( args[0] ) ){
Console.WriteLine( "Le chemin spécifié n'est pas valide !!" );
return;
}
Console.Write( "Suppression des tags UTF-8 BOM en cours..." );
DirectoryInfo oDirectoryInfo =newDirectoryInfo( args[ 0 ] );
ScanUtf8Bom oScanUtf8Bom =newScanUtf8Bom();
oScanUtf8Bom.ScanFolder( oDirectoryInfo );
}
}
classScanUtf8Bom{
publicvoidScanFolder( DirectoryInfo oDirectory ){
foreach( FileInfo oFileInfoinoDirectory.GetFiles() )
if( this.FileIsBOM( oFileInfo.FullName ) )
this.DeleteTagBom( oFileInfo.FullName );
foreach( DirectoryInfo oDirectoryChildinoDirectory.GetDirectories() )
if( oDirectoryChild.Name != ".svn" )
this.ScanFolder( oDirectoryChild );
}
publicboolFileIsBOM(stringsFile ){
byte[] oData =newByte[3];
byte[] oBom =newByte[3];
oBom[0] =239;// -> i
oBom[1] =187;// -> »
oBom[2] =191;// -> ¿
FileStream oFileStream =newFileStream( sFile, FileMode.Open );
oFileStream.Read( oData,0,3);
for( int i =0; i < oData.Length; i++ )
if( oData[ i ] != oBom[ i ] )
returnfalse;
oFileStream.Close();
returntrue;
}
publicvoidDeleteTagBom( string sFile ){
Console.WriteLine( "delete tag in : " + sFile );
FileInfo oFileInfo =newFileInfo( sFile );
byte[] oData =newbyte[ oFileInfo.Length ];
FileStream oFileStream =newFileStream( sFile, FileMode.Open );
oFileStream.Read( oData,0, (int)oFileInfo.Length );
oFileStream.Close();
File.Delete( sFile );
oFileStream =newFileStream( sFile, FileMode.Create );
oFileStream.Write( oData,3, oData.Length -3);
oFileStream.Close();
}
}
}

