Java:从.txt文件LINE BY LINE中读取字节

请查看以下代码

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文件。 我不知道怎么做最后一件事。 我怎样才能做到这一点? 请帮忙!

如果您想操纵任何类型的文件,请不要认为它们包含文本数据,并将它们视为包含字节的二进制文件。 使用输入和输出流读取和写入二进制文件。

下面是一个读取文件并将其拆分为写入N个输出文件的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(); } } }