2013-07-08 2 views
-4

записи программа для чтения байтов из всех файлов в папке ...прочитанных байт из всех файлов в папке

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

Я получаю ошибку ..

601688450_eBill_20130708.pdf 
601688450_eBill_20130708.pdf 
Exception in thread "main" java.nio.file.NoSuchFileException: 601688450_eBill_20130708.pdf 
    at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) 
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) 
    at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) 
    at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(Unknown Source) 
    at sun.nio.fs.WindowsFileAttributeViews$Basic.readAttributes(Unknown Source) 
    at sun.nio.fs.WindowsFileSystemProvider.readAttributes(Unknown Source) 
    at java.nio.file.Files.readAttributes(Unknown Source) 
    at java.nio.file.Files.size(Unknown Source) 
    at java.nio.file.Files.readAllBytes(Unknown Source) 
    at xmlfile.main(xmlfile.java:50) 

И System.out.println печатает только одну строку , Если в папке есть 5 файлов, она должна написать 5 строк?

Я попытался без указания байтов и размер, который дал:

File = 601693971_eBill_20130708.pdf, Offset = 0, Size = 

Так почему не другие файлы печатаются, а?

+0

[ 'NoSuchFileException'] (http://docs.oracle.com/javase/7/docs/api/java/nio/file/NoSuchFileException.html) s выбрасываются, когда целевой файл не существует. Вы на 100% уверены, что существует '601688450_eBill_20130708.pdf'? – Jeffrey

+0

ya, есть 7 файлов в папке, и 5 файлов в формате pdf, включая этот файл. Я не ошибаюсь, пожалуйста, помогите мне спасибо! – user2559055

+0

вы можете исправить интервал в своем коде, чтобы нам было легче читать? –

ответ

0

Вы передаете только имя файла, чтобы получить путь к файлу, который ищет неправильный каталог для файла.

Попробуйте

Path filesin1= Paths.get(filesin.getAbsolutePath()); 

вместо

Path filesin1= Paths.get(filesin); 

Если вы хотите проверить, добавить эти отпечатки

System.out.println(filesin.getAbsolutePath()); 
System.out.println(filesin1.toString()); 

EDIT ли эти изменения дайте мне знать, выход

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

Я попытался file.toURI() Ошибка при переименовании всего файла .. не могу исправить эту ошибку .. как это сделать ?? пожалуйста, помогите мне спасибо! – user2559055

+0

На самом деле, я попробовал ;; byte [] bytes = filesin.getBytes(); \t \t \t \t \t size = bytes.length; и его работала, но она печатала только одну строку для 1 файла, а что касается других файлов? Файл = 601693971_eBill_20130708.pdf, Смещение = 112, Размер = 28 Что делать с другими файлами ?? – user2559055

+0

Не уверен насчет ошибки, которую вы получаете с методом, который я опубликовал выше. Все файлы в папке pdf? и в нижнем регистре pdf –

0

Проблема в том, что вы пытаетесь получить доступ к 601688450_eBill_20130708.pdf, когда вы пытаетесь получить доступ к 07072013/601688450_eBill_20130708.pdf.

Использование Path filesin1 = new File(folder, filesin).toPath()

+0

на самом деле, я попробовал ;; byte [] bytes = filesin.getBytes(); \t \t \t \t \t size = bytes.length; и его работала, но она печатала только одну строку для 1 файла, а что касается других файлов? Файл = 601693971_eBill_20130708.pdf, Смещение = 112, Размер = 28 Что делать с другими файлами ?? – user2559055

Смежные вопросы