我希望能够从我的应用程序传输我的文件块而不是完整的文件,以便更有效地传输它.最好的方法是什么?
更新
这是一个我需要这种方法的例子:假设我有一个4GB文件,我试图上传.如果网络出现故障,我的文件上传将停止,我将不得不从头开始.相反,如果我跟踪已经传输的块,我可以从尚未传输的块继续.这对于片状网络连接尤其重要.
我想将包含字符串的大文件合并到一个文件中,并尝试使用nio2.我不想将整个文件加载到内存中,所以我尝试使用BufferedReader:
public void mergeFiles(filesToBeMerged) throws IOException{
Path mergedFile = Paths.get("mergedFile");
Files.createFile(mergedFile);
List<Path> _filesToBeMerged = filesToBeMerged;
try (BufferedWriter writer = Files.newBufferedWriter(mergedFile,StandardOpenOption.APPEND)) {
for (Path file : _filesToBeMerged) {
// this does not work as write()-method does not accept a BufferedReader
writer.append(Files.newBufferedReader(file));
}
} catch (IOException e) {
System.err.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这个,这个工作,hower,字符串的格式(例如新行等不会被复制到合并文件):
...
try (BufferedWriter writer = Files.newBufferedWriter(mergedFile,StandardOpenOption.APPEND)) {
for (Path file : _filesToBeMerged) {
// writer.write(Files.newBufferedReader(file));
String line = null;
BufferedReader reader = Files.newBufferedReader(file);
while ((line = reader.readLine()) != null) { …Run Code Online (Sandbox Code Playgroud) 请查看以下代码
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 …Run Code Online (Sandbox Code Playgroud)