Java FileInputStream Fehler: "No such file or directory"

Ich Schreibe ein java-code durch einen .sfo (eine Kombination von SQL und Fortran) - Datei, und entfernen Sie eine bestimmte Gruppe von Zeichen, wenn Sie zeigen, bis in der Datei. Ich verwende Eclipse auf einem 64-bit-Windows-7-Computer, wenn das macht keinen Unterschied. Der code tut, was ich will, das entfernen der Blöcke von Zeichen und so weiter, aber am Ende, nachdem es mir meine Ausgabe zeigt
"Fehler: Keine solche Datei oder Verzeichnis."
Ich weiß nicht, warum; der einzige externe Datei, die ich bin Referenzierung ist die oben genannte .sfo. Die Datei existiert, und der Pfad der Datei, die ich im code angegeben ist korrekt. Ich habe die Berechtigungen zum Lesen und schreiben der Datei.
Hier ist mein code (mehr oder weniger; eine Menge, es ist repetitiv, so werde ich schneiden, um einige der unwichtigen Sachen):

Wird der absolute Pfad

C:/Users/frencke/p4/frencke_LOHEPCE00294173/pcs/main/lib/gp/file.sfo.

Ja, ich habe vollen Zugriff auf die Datei.

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class StringSplit {
    public static void main(String args[]) {
        try {
            ArrayList<String> arr = new ArrayList<String>();
            //Here I initialized a bunch of ArrayLists; nothing relevant
            ArrayList<String> arr26 = new ArrayList<String>();
            FileInputStream fstream = new FileInputStream(
                    "C:/Users/.../file.sfo");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            while ((strLine = br.readLine()) != null) {
                arr.add(strLine);
                String[] temp;
                String delimiter = "\\s+\\s+\\s+\\s+\\s+&\\s+";
                temp = strLine.split(delimiter);
                for (int i = 0; i < temp.length; i++)
                    arr2.add(temp[i]);
                //Here I did all of the removal of the various blocks of text
                String[] temp27;
                String delimiter27 = "\t9";
                String strLine27 = null;
                for (int i = 0; i < temp26.length; i++)
                    strLine27 = temp26[i];
                temp27 = strLine27.split(delimiter27);
                for (int i = 0; i < temp27.length; i++)
                    System.out.println(temp27[i]);
                in.close();
            }
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}

Wieder, die Fehlermeldung, die ich bekam war:
"Fehler: Keine solche Datei oder Verzeichnis."
Wenn jemand weiß, warum dies passiert ist, würde ich es gerne hören; vielen Dank!

  • Was ist der absolute Pfad der Datei.sfo?
  • Hat die Datei die Berechtigung "Lesen"?
  • Sorry, wenn ich unklar war; die "..." war gerade zeigen, wo ich schneiden Sie einen großen Teil der Datei Pfad zum Lesen Zwecke auf dieser website. Der absolute Pfad ist es in voller Höhe in dem code (es ist C:/Users/frencke/p4/frencke_LOHEPCE00294173/pcs/main/lib/gp/file.sfo.) Ja, ich habe vollen Zugriff auf die Datei.
  • Bearbeiten Sie die kommentierte Informationen. Bitte edit im OP das nächste mal und warum delimiter = "\\s+\\s+\\s+\\s+\\s+&\\s+";?
  • auf Eingabeaufforderung, verschieben auf c: Verzeichnis und dort schreiben dir C:/Users/frencke/p4/frencke_LOHEPCE00294173/pcs/main/lib/gp/file.sfo was ist die Ausgabe zeigt?
  • Ja habe ich gesehen, danke. Ich verwendete Trennzeichen = "\\s+\\s+\\s+\\s+\\s+& - \\s+";, weil der Fortran-Teil des Codes in die .sfo ist Fortran77, nicht Fortran90, so hat es Dinge wie "[space][space][space][space]&" wo es war weiterhin ein Betrieb von einer Zeile zur nächsten.
  • Schließen Sie die DataInputStream in Ihrem while Schleife. Jedenfalls kann man noch verwenden \\s+ begegnen werden ein oder mehrere Leerzeichen.
  • okay. Wo sollte ich meine schließen DataInputStream? Und ich habe versucht, es mit nur einer \\s+, der arbeitete, in Ordnung für das kaufmännische und-Zeichen splitten, aber wenn ich split einige der gebräuchlichsten Zeichen aus (z.B. 1 oder +), mit einem \\s+ nahm einige der Instanzen der Charaktere, die ich behalten wollte.
  • Sie können close Ihre Ressourcen, wenn Ihr fertig sind mit Ihrem file Lesen. Aber ich kann Ihnen viel info auf regex da ich nicht genau weiß, wie dein string Aussehen und wird komplett seperate Frage zu stellen. Zuerst müssen Sie das Rätsel lösen, Ihr zugewandt sind.
  • Warten Sie, ich glaube ich hab es. Ich geändert.close(); } um } in.close();. Ist es das, was du meintest? Denn jetzt scheint es einwandfrei zu funktionieren. Die regex ist nicht das problem; ich bin mir nur nicht erklären, warum es nicht sehr gut.
  • Okay, ich poste es als Antwort (sobald die 8 Stunden, die es erfordern, mich zu warten, um Antwort auf meine eigene Frage bestanden haben) und die Antwort akzeptieren. Vielen Dank für die Hilfe!

InformationsquelleAutor Itsan Alias | 2013-07-03
Schreibe einen Kommentar