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();
  }
}