2013-07-08 4 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)의가 발생하는 경우 대상 파일 존재하지 않는다. '601688450_eBill_20130708.pdf'가 100 % 확신합니까? – Jeffrey

+0

예, 폴더에 7 개의 파일이 있으며 5 개의 pdf 파일에도이 파일이 포함되어 있습니다. 잘못된 것이 아닙니다. – user2559055

+0

우리가 쉽게 읽을 수 있도록 코드의 간격을 수정할 수 있습니까? –

답변

0

파일의 잘못된 경로를 찾고있는 파일의 경로를 가져 오기 위해 파일 이름 만 전달하고 있습니다. 당신이 이러한 변경 작업을 수행 이러한 인쇄합니다

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

EDIT를 추가를 점검 나 출력을 알려하려면

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

대신

Path filesin1= Paths.get(filesin); 

의 시도

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

실제로, 시도했습니다 ;; 바이트 [] 바이트 = filesin.getBytes(); \t \t \t \t \t 크기 = bytes.length; 그리고 그것의 일하지만 그것은 단지 하나의 파일에 대해 한 줄 인쇄 다른 파일에 대해 무엇 ?? 파일 = 601693971_eBill_20130708.pdf, 오프셋 = 112, 크기 = 28 다른 파일은 어떻게됩니까 ?? – user2559055

+0

위에서 게시 한 방법으로 얻는 오류에 대해 확실하지 않습니다. 귀하의 폴더에있는 모든 파일은 PDF입니까? 소문자 pdf –

0

07072013/601688450_eBill_20130708.pdf에 액세스하려고 할 때 601688450_eBill_20130708.pdf에 액세스하려고하는 중 문제가 발생했습니다.

사용 Path filesin1 = new File(folder, filesin).toPath()

+0

실제로, 시도 ;; 바이트 [] 바이트 = filesin.getBytes(); \t \t \t \t \t 크기 = bytes.length; 그리고 그것의 일하지만 그것은 단지 하나의 파일에 대해 한 줄 인쇄 다른 파일에 대해 무엇 ?? 파일 = 601693971_eBill_20130708.pdf, 오프셋 = 112, 크기 = 28 다른 파일은 어떻게됩니까 ?? – user2559055