2013-03-10 16 views
6

Jestem stoi jakiś problem dla tych poniższych kodówPisanie XML w Java FileNotFoundException

 try { 
      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

      //root elements 
      Document doc = docBuilder.newDocument(); 

      Element rootElement = doc.createElement("subcompany"); 
      doc.appendChild(rootElement); 

      //id elements 
      Element id = doc.createElement("id"); 
      id.appendChild(doc.createTextNode(subCompanyId != null ? subCompanyId : " ")); 
      rootElement.appendChild(id); 

      TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
      Transformer transformer = transformerFactory.newTransformer(); 
      DOMSource source = new DOMSource(doc); 

      transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 

      String xmlPath = "/project/MallDirectory/mall"; 

      //EDITED for File creation before writing. 
      boolean isFileCreated = new File(xmlPath, "subcompany.xml").createNewFile(); 
      System.out.println(isFileCreated);     

      StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml")); 

      transformer.transform(source, result); 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 

Po biegnę, otrzymuję ten następujący błąd:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory) 

on używany do pracy na mój inny projekt, jednak nie tym razem. Co dokładnie poszło nie tak?

edycja:

Oto droga, którą staram się napisać do. Plik zostanie utworzony, ale jest pusty.

enter image description here

+2

Czy istnieje plik w „/project/MallDirectory/mall/subcompany.xml”? –

+0

Gdzie znajduje się plik? –

+0

Is/project to nazwa twojego projektu? – Sach

Odpowiedz

18

Udało mi się rozwiązać problem.

Oto Błąd:

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:/project/MallDirectory/mall/subcompany.xml (No such file or directory) 

myślę może transformator próbuje napisać xml do tej ścieżce „file: /project/MallDirectory/mall/subcompany.xml”. Nie wiem, jak to się stało, ponieważ specjalnie ustawiłem ścieżkę pliku "/project/MallDirectory/mall/subcompany.xml" i nie poprzedzam prefiksem "file: /".

Dlatego jakoś udało się go naprawić w ten sposób:

... 

//ERROR CODE: 
//StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml")); 
// 
StreamResult result = new StreamResult(new File(xmlPath, "subcompany.xml").getPath()); 
transformer.transform(source, result); 

... 
+0

Charlie - wielkie dzięki za umieszczenie tego. Mam ten sam problem. Czy masz jakiś pomysł, dlaczego musimy użyć .getPath()? Jest to sprzeczne z każdą logiką, jaką mogę zebrać! Dzięki! –

+0

Miałem to samo, myślę, że konstruktor StreamResult psuje ścieżkę pliku, zaczyna się od "file: //" na przykład "file: /// tmp/lol". W twoim przypadku zaczyna się od "file:", w każdym razie dziękuję, getPath() zrobił dobrze. – deathangel908

+0

Dzięki kolego, zrobiłeś mój dzień! – michoprogrammer

0

Liczba plików, które mogą być w stanie otwartym w dowolnym momencie jest specyficzny dla OS (offcourse może być skonfigurowany) i osiągnęły górną granicę that.Look w kodzie podstawa aplikacji, jeśli masz jakiś kod, który próbuje otworzyć plik, ale nie zamyka strumienia po jego użyciu. Sprawdź, czy takie kody.

0

Zdefiniowana ścieżka katalogu jest niepoprawna. Zapoznaj się z JavaDoc, aby określić, która forma ścieżki katalogu jest potrzebna do uzyskania lokalizacji pliku.

JavaDoc java.io.File

+0

tak, w jakiś sposób moja maszyna wskazuje na inną ścieżkę. może z powodu mojego systemu plików maszynowego. –

0

Jeśli "/ Projekt" to nazwa projektu, a następnie spróbuj "./MallDirectory/mall" jeszcze spróbować "./project/MallDirectory/mall". Proszę uważnie przeczytać strunę, ponieważ zawiera ona kropkę.

+0

Witaj,/project to katalog do przechowywania wszystkich plików konfiguracyjnych mojej aplikacji. mój projekt netbeans znajduje się w innym katalogu. –

+0

Czy możesz po prostu podać strukturę katalogów? Więc będzie łatwo wyjaśnić, co się dzieje? – Sach

+0

pewnie. Próbuję napisać plik xml wewnątrz/project/MallDirectory/mall folder./projekt znajduje się na moim folderze głównym komputera (Machintosh HD) –