1. C# / Говнокод #2647

    +114.3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    static void JoinFiles(string FileOne, string FileTwo, string Out)
    		{
    			//declare head size
    			const long HeadSize = sizeof(long) * 4;
    			//get files size
    			long FFS = (new FileInfo(FileOne).Length),
    				  SFS = (new FileInfo(FileTwo).Length);
    			//Full paths of files
    			string FFFN = Path.GetFileName(Path.GetFullPath(FileOne)),
    					 SFFN = Path.GetFileName(Path.GetFullPath(FileTwo));
    			//calculate offsets
    			long FirstFileOffset = HeadSize + FFFN.Length,
    				  FirstFileNameOffset = HeadSize,
    				  SecondFileNameOffset = FirstFileOffset + FFS,
    				  SecondFileOffset = SecondFileNameOffset + SFFN.Length;
    			//declare head
    			byte[] Head = new byte[HeadSize];
    			/*	
    			 *		FFO	FFNO			SFO	SFNO
    			 */
    			//Format head
    			Head = JoinArrays<byte>(BitConverter.GetBytes(FirstFileOffset),
    										 BitConverter.GetBytes(FirstFileNameOffset),
    										 BitConverter.GetBytes(SecondFileOffset),
    										 BitConverter.GetBytes(SecondFileNameOffset));
    			//declare streams
    			System.IO.BinaryReader FBR = new BinaryReader(File.OpenRead(FileOne));
    			System.IO.BinaryWriter BW = new System.IO.BinaryWriter(File.Create(Out));
    			//Write head information
    			foreach (byte b in Head) BW.Write(b);
    			//Write first file name
    			byte[] buffer = System.Text.ASCIIEncoding.ASCII.GetBytes(FFFN);
    			BW.Write(buffer, 0, buffer.Length);
    			//Write first file
    			for (long id = 0; id < FFS; id++) BW.Write(FBR.ReadByte());
    			//Write second file name
    			buffer = System.Text.ASCIIEncoding.ASCII.GetBytes(SFFN);
    			BW.Write(buffer, 0, buffer.Length);
    			//Open second file
    			FBR.Close();
    			FBR = new BinaryReader(File.OpenRead(FileTwo));
    			//Write second file
    			for (long id = 0; id < SFS; id++) BW.Write(FBR.ReadByte());
    			//Save result
    			BW.Flush();
    			//Close streams
    			FBR.Close();
    			BW.Close();
    		}

    Функция склеивания двух файлов. Писал вчера вечером, когда утром посмотрел, я понял что писал я это очень поздно.

    Запостил: psina-from-ua, 21 Февраля 2010

    Комментарии (13) RSS

    • показать все, что скрытода уж, полная хуита.
      public static void join(String f1, String f2, String o) throws FileNotFoundException, IOException {
              FileOutputStream os = new FileOutputStream(o);
              FileInputStream is1 = new FileInputStream(f1);
              FileInputStream is2 = new FileInputStream(f2);
      
              byte[] bb = new byte[1024];
              int l;
              while((l = is1.read(bb)) != -1) os.write(bb,0,l);
              while((l = is2.read(bb)) != -1) os.write(bb,0,l);
      
              os.close();
              is1.close();
              is1.close();
          }
      Ответить
      • показать все, что скрытоой, забыл добавить "java рулит"
        Ответить
      • void Join ( AnsiString First, AnsiString Second, AnsiString Out );
        void Join ( AnsiString First, AnsiString Second, AnsiString Outfile )
        {
        TFileStream * Fst = new TFileStream ( First, fmOpenRead );
        TFileStream * Snd = new TFileStream ( Second, fmOpenRead );
        TFileStream * Out = new TFileStream ( Outfile, fmCreate );
        
        Out->CopyFrom ( Fst, Fst->Size );
        Out->CopyFrom ( Snd, Snd->Size );
        
        Fst->Free ( );
        Snd->Free ( );
        Out->Free ( );
        }
        /* ... */
        Join ( "file0.txt", "file1.txt", "file_r.txt" );

        Ой, забыл добавить. Java - хуита.
        Ответить
    • [NotNull]
      private static IEnumerable<T> Use<T>([NotNull] this T instance) where T : class, IDisposable
      {
          using (instance)
              yield return instance;
      }
      
      private static void Join([NotNull] string destinationName, [NotNull] params string[] sourceNames)
      {
          var sources = from sourceName in sourceNames
                        from source in File.OpenRead(sourceName).Use()
                        select source;
      
          using (var destination = File.OpenWrite(destinationName))
              foreach (var source in sources) {
                  source.CopyTo(destination);
              }
      }

      Ой, забыл добавить. Хуита - хуита.
      Ответить
    • sub merge {  
         open(OUT, '>', pop);
         for (@_) {
            open (IN, '<', $_);
            print OUT $i while($i = <IN>);
            close IN;
         }
         close OUT;
      }
      
      merge('1.txt', '2.txt', '3.txt', 'out.txt');


      Ах да! Победителем становится код:
      $ cat *txt > output.txt

      :)
      Ответить
      • Если рассматривать консольные команды, то
        copy 123.txt+234.txt out.txt
        is fine too.

        Но, какой же тут членомеринг?
        Ответить
    • си-решотка для далбаебов и дибилов, для умных людей есть дельфи и 1с-бугалтерия
      Ответить
      • Кодъ на одноэсе склейки файлов в студию!
        Ответить
    • Запись переменных в CamelCase (не путаться с camelCase) и в капслоке - ппц.
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить

    Добавить комментарий