java - जावा: लाइन से एक.txt फ़ाइल लाइन से बाइट्स पढ़ना



file io (1)

कृपया निम्नलिखित कोड पर एक नज़र डालें

    import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class FileCopy2
{    public static void main(String[]args) 
    {        
        try
        {

              //First in here, we are trying to get the bytes from the file


        File file = new File("D:/burn/preview.mp3"); //The File you need to get

        byte bufferFile[] = new byte[(int)file.length()]; //Creating a byte array, which has the exact size of the file

        BufferedInputStream bi = new BufferedInputStream(new FileInputStream(file));// Creating Buffers for IO

        bi.read(bufferFile, 0, bufferFile.length);//Reading the file

        bi.close();//Closing Buffer




        //Then in here, we are writing those bytes to a text file

        BufferedOutputStream bu = new BufferedOutputStream(new FileOutputStream("C:/Users/Yohan/Desktop/test.txt")); //The output Location
        bu.write(bufferFile, 0, bufferFile.length);//Writing the file
        bu.flush();//Flushing the buffer
        bu.close();//Closing the Buffer

        System.out.println("Done Copieng");



        //Here we are trying to WRITE number of .txt files containing the byte details..In other words, I am breaking the file into peaces

        BufferedReader br = new BufferedReader(new FileReader("C:/Users/Yohan/Desktop/test.txt"));
        BufferedWriter bw = null;

        String content = "";
        int count = 1;
        while((content = br.readLine())!=null)
        {

            bw = new BufferedWriter(new FileWriter("C:/Users/Yohan/Desktop/output4/file"+count+".txt"));
            bw.write(content);
            bw.flush();
            bw.close();


            count++;
            System.out.println("Running");

        }
        System.out.println("-----------------------Done-----------------------------");



            //NOW I NEED TO read all the generated .txt file and create the original file back. How to do it? //
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

इसमें, पहले मुझे एक फ़ाइल के बाइट मिलते हैं, और उन्हें एक पाठ फ़ाइल में लिखते हैं। तब मैंने उस पाठ फ़ाइल को पढ़ा, पंक्ति से लाइन पढ़ा, और प्रत्येक पंक्ति के लिए एक अलग .txt फ़ाइल उत्पन्न की। अब मूल प्रोग्राम हजारों फाइलों में विभाजित है अब मुझे सभी .txt फ़ाइलों को पढ़ने और फिर .txt फ़ाइल उत्पन्न करने की आवश्यकता है। मुझे नहीं पता कि आखिरी चीज़ कैसे करें मैं उसे कैसे कर सकता हूँ? कृपया सहायता कीजिए!


यदि आप किसी भी प्रकार की फ़ाइल को हेरफेर करना चाहते हैं, तो कभी भी वे टेक्स्ट डेटा नहीं रखते हैं, और उन्हें बाइनरी फ़ाइलों के रूप में मानते हैं, जिसमें बाइट्स शामिल हैं। इनपुट और आउटपुट स्ट्रीमों का उपयोग करके बाइनरी फ़ाइलों को पढ़ा और लिखा जाता है।

यहां एक विधि का एक उदाहरण है जो एक फ़ाइल पढ़ता है और उसे एन आउटपुट फाइल में लिखे 1024 बाइट्स के टुकड़ों में विभाजित करता है:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileSplit {
    public static void main(String[] args) throws IOException {
        new FileSplit().splitFile(new File(args[0]));
    }

    private void splitFile(File file) throws IOException {
        FileInputStream fis = new FileInputStream(file);
        try {
            byte[] buffer = new byte[1024];
            // remaining is the number of bytes to read to fill the buffer
            int remaining = buffer.length; 
            // block number is incremented each time a block of 1024 bytes is read 
            //and written
            int blockNumber = 1;
            while (true) {
                int read = fis.read(buffer, buffer.length - remaining, remaining);
                if (read >= 0) { // some bytes were read
                    remaining -= read;
                    if (remaining == 0) { // the buffer is full
                        writeBlock(blockNumber, buffer, buffer.length - remaining);
                        blockNumber++;
                        remaining = buffer.length;
                    }
                }
                else { 
                    // the end of the file was reached. If some bytes are in the buffer
                    // they are written to the last output file
                    if (remaining < buffer.length) {
                        writeBlock(blockNumber, buffer, buffer.length - remaining);
                    }
                    break;
                }
            }
        }
        finally {
            fis.close();
        }
    }

    private void writeBlock(int blockNumber, byte[] buffer, int length) throws IOException {
        FileOutputStream fos = new FileOutputStream("output_" + blockNumber + ".dat");
        try {
            fos.write(buffer, 0, length);
        }
        finally {
            fos.close();
        }
    }
}




byte