Java 从文件夹中的所有文件读取字节
写程序从文件夹中的所有文件中读取字节Java 从文件夹中的所有文件读取字节,java,Java,写程序从文件夹中的所有文件中读取字节 import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import j
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
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.Calendar;
public class xmlfile {
public static void main(String[] args) throws IOException {
File folder = new File ("07072013");
File[] listOfFiles = folder.listFiles();
String filesin;
BufferedWriter xmlfile = null;
String outxmlfile = ("07072013\\" + "jayraj" + ".xml");
int offset = 0;
int size = 0;
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
filesin = listOfFiles[i].getName();
if (filesin.endsWith("pdf")) {
System.out.println(filesin);
Path filesin1= Paths.get(filesin);
System.out.println(filesin1);
xmlfile = new BufferedWriter(new FileWriter(outxmlfile));
byte[] bytes = Files.readAllBytes(filesin1);
size = bytes.length;
xmlfile.append("File = " + filesin1 + ", Offset = " + offset + ", Size = " + size);
}
}
}
xmlfile.close();
}
}
System.out.println只打印一行。如果文件夹中有5个文件,它应该写5行吗
我在没有指定字节和大小的情况下进行了尝试,结果:
File = 601693971_eBill_20130708.pdf, Offset = 0, Size =
那么,为什么不打印其他文件呢?您只是传入文件名,以获取文件路径,而该文件在错误的目录中查找 试试这个
Path filesin1= Paths.get(filesin.getAbsolutePath());
而不是
Path filesin1= Paths.get(filesin);
如果你想检查添加这些打印
System.out.println(filesin.getAbsolutePath());
System.out.println(filesin1.toString());
编辑并执行这些更改,让我知道输出
public class xmlfile {
public static void main(String[] args) throws IOException {
File folder = new File ("07072013");
File[] listOfFiles = folder.listFiles();
//ADD THIS
System.out.println("There are " + listOfFiles.length + " files");
String filesin;
BufferedWriter xmlfile = null;
// PUT THIS OUTSIDE YOUR LOOP
xmlfile = new BufferedWriter(new FileWriter(outxmlfile));
String outxmlfile = ("07072013\\" + "jayraj" + ".xml");
int offset = 0;
int size = 0;
for (int i = 0; i < listOfFiles.length; i++) {
//ADD THIS
File f = listOfFiles[i];
// AND THIS
System.out.println(i + " " + f.getAbsolutePath());
if (f.isFile()) {
filesin = listOfFiles[i].getName();
if (filesin.endsWith("pdf")) {
System.out.println(filesin);
//CHANGE THIS
Path aPath = Paths.get(f.getAbsolutePath());
// Change this
System.out.println(filesin1.toString());
// CHANGE THIS what you got to work
byte[] bytes = filesin.getBytes(); // This is actually just getting the bytes of the String probably not what you want
byte[] actualBytes = Files.readAllBytes(aPath);
size = actualBytes.length;
//EDIT THIS (ADD NEWLINE CHAR AT THE END)
xmlfile.append("File = " + filesin1 + ", Offset = " + offset + ", Size = " + size + "\n");
}
}
}
xmlfile.close();
}
}
问题是,当您应该尝试访问07072013/601688450_eBill_20130708.pdf时,您正在尝试访问601688450_eBill_20130708.pdf
Use Path filesin1=new Filefolder,filesin.toPath在目标文件不存在时抛出。你100%确定601688450_eBill_20130708.pdf存在吗?是的,文件夹中有7个文件,5个pdf文件也包括这个文件。我不知道怎么了,请帮助我谢谢!!你能在你的代码中修改空格以便我们更容易阅读吗?嘿,我已经删除了一些空格,所以..没关系吗??请让我知道!!谢谢为什么不包括有问题的目录的dir/ls列表?我尝试了file.tori获取错误重命名所有文件。。无法修复该错误。。怎么做??请帮帮我,谢谢!!事实上,我试过了;;byte[]bytes=filesin.getBytes;大小=字节。长度;它工作了,但是它只打印一行一个文件,其他文件呢??File=601693971_eBill_20130708.pdf,Offset=112,Size=28其他文件呢?不确定您使用我上面发布的方法得到的错误。文件夹中的所有文件都是pdf文件吗?和小写的pdfyap。。文件夹中有5个文件,应该写5行吗??所有5个文件!!我不知道为什么它不起作用!!请帮帮我。。谢谢查看我上面的编辑,添加更改,并让我知道控制台的输出—实际上,我已经尝试过了;;byte[]bytes=filesin.getBytes;大小=字节。长度;它工作了,但是它只打印一行一个文件,其他文件呢??File=601693971\u eBill\u 20130708.pdf,Offset=112,Size=28其他文件呢??
public class xmlfile {
public static void main(String[] args) throws IOException {
File folder = new File ("07072013");
File[] listOfFiles = folder.listFiles();
//ADD THIS
System.out.println("There are " + listOfFiles.length + " files");
String filesin;
BufferedWriter xmlfile = null;
// PUT THIS OUTSIDE YOUR LOOP
xmlfile = new BufferedWriter(new FileWriter(outxmlfile));
String outxmlfile = ("07072013\\" + "jayraj" + ".xml");
int offset = 0;
int size = 0;
for (int i = 0; i < listOfFiles.length; i++) {
//ADD THIS
File f = listOfFiles[i];
// AND THIS
System.out.println(i + " " + f.getAbsolutePath());
if (f.isFile()) {
filesin = listOfFiles[i].getName();
if (filesin.endsWith("pdf")) {
System.out.println(filesin);
//CHANGE THIS
Path aPath = Paths.get(f.getAbsolutePath());
// Change this
System.out.println(filesin1.toString());
// CHANGE THIS what you got to work
byte[] bytes = filesin.getBytes(); // This is actually just getting the bytes of the String probably not what you want
byte[] actualBytes = Files.readAllBytes(aPath);
size = actualBytes.length;
//EDIT THIS (ADD NEWLINE CHAR AT THE END)
xmlfile.append("File = " + filesin1 + ", Offset = " + offset + ", Size = " + size + "\n");
}
}
}
xmlfile.close();
}
}