将字节附加到.dat文件的java代码
有没有办法将字节附加到文件中?Java代码,用于从文件夹中的PDF文件中获取所有字节并追加到.dat文件中,但追加不起作用。如果我使用write,它可以工作,但它只为第一个PDF文件编写。其他PDF文件呢?有没有办法将所有字节追加到.dat文件中将字节附加到.dat文件的java代码,java,Java,有没有办法将字节附加到文件中?Java代码,用于从文件夹中的PDF文件中获取所有字节并追加到.dat文件中,但追加不起作用。如果我使用write,它可以工作,但它只为第一个PDF文件编写。其他PDF文件呢?有没有办法将所有字节追加到.dat文件中 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
public class newxmlnew {
public static void main(String[] args) throws IOException {
File folder = new File ("07072013");
File[] listOfFiles = folder.listFiles();
System.out.println("There are " + listOfFiles.length + " files");
String filesin;
int offset = 0;
int size = 0;
FileOutputStream out = new FileOutputStream("07072013\\" + "jayraj" + ".dat",true);
for (int i = 0; i < listOfFiles.length; i++) {
File f = listOfFiles[i];
System.out.println(i + " " + f.getAbsolutePath());
if (f.isFile()) {
filesin = listOfFiles[i].getName();
if (filesin.endsWith("pdf")) {
System.out.println(filesin);
Path aPath = Paths.get(f.getAbsolutePath());
System.out.println(filesin.toString());
byte[] actualBytes = Files.readAllBytes(aPath);
size = actualBytes.length;
try {
out.write(actualBytes);
} finally {
out.close();
}
}
}
}
}
}
您正在循环内创建一个新的FileOutputStream,该文件将覆盖上一个文件。您需要在循环外声明它,请注意,末尾的布尔值用于追加数据
FileOutputStream out = new FileOutputStream("07072013\\" + "jayraj" + ".dat", true);
然后使用
out.write(actualBytes)
快速查看文档可以看出这一点
正如埃里克也提到的
移动finally块并关闭调用,直到for循环之后:
try {
for ( all files ... ) {
write ..
}
} finally {
out.close();
}
try {
for ( all files ... ) {
write ..
}
} finally {
out.close();
}
问题是最后一块。无论是否失败,这都会在第一次写入后立即执行。所以outputstream总是在写入一个文件后关闭
try {
out.write(actualBytes);
} finally {
out.close();
}
移动finally块并关闭调用,直到for循环之后:
try {
for ( all files ... ) {
write ..
}
} finally {
out.close();
}
try {
for ( all files ... ) {
write ..
}
} finally {
out.close();
}
快速谷歌帮助这一个。我在谷歌搜索,附加字节,但。。它没有给我任何解决办法。。请帮帮我。。谢谢所以,我需要把箱子放在外面,以便循环。。实际上我试过了,但是。。它给我的错误,它也没有附加。。。。。请帮帮我。。谢谢你还需要把你的手移到外面;在循环外部,否则流在第一个循环之后关闭。因此我需要在for循环外部创建文件。。我试过了,但它给我的错误流关闭!!我在我的帖子中编辑了那个代码,请帮助我。。谢谢谢谢大家!!现在可以工作了。。非常感谢你!!