Het systeem kan het in java gespecificeerde bestand niet vinden

Ik ben een programma aan het maken dat een bestand opent en leest.
Dit is mijn code:

import java.io.*;
public class FileRead{
    public static void main(String[] args){
        try{
            File file = new File("hello.txt");
            System.out.println(file.getCanonicalPath());
            FileInputStream ft = new FileInputStream(file);
            DataInputStream in = new DataInputStream(ft);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String strline;
            while((strline = br.readLine()) != null){
                System.out.println(strline);
            }
            in.close();
        }catch(Exception e){
            System.err.println("Error: " + e.getMessage());
        }
    }
}

maar als ik ren, krijg ik deze foutmelding:

C:\Users\User\Documents\Workspace\FileRead\hello.txt
Error: hello.txt (The system cannot find the file specified)

mijn FileRead.java en hello.txt bevinden zich in dezelfde map die te vinden is in:

C:\Users\User\Documents\Workspace\FileRead

Ik vraag me af wat ik verkeerd doe?


Antwoord 1, autoriteit 100%

Ik heb je code gekopieerd en het werkt prima.

Ik vermoed dat je gewoon een probleem hebt met de daadwerkelijke bestandsnaam van hello.txt, of dat je in een verkeerde map draait. Overweeg om te verifiëren volgens de methode voorgesteld door @Eng.Fouad


Antwoord 2, autoriteit 91%

Probeer de namen van alle bestanden in de directory te vermelden door te bellen met:

File file = new File(".");
for(String fileNames : file.list()) System.out.println(fileNames);

en kijk of je je bestanden in de lijst kunt vinden.


Antwoord 3, autoriteit 64%

Je moet de absolute padnaam opgeven waar het bestand bestaat.

        File file = new File("C:\\Users\\User\\Documents\\Workspace\\FileRead\\hello.txt");

Antwoord 4, autoriteit 27%

Klik in uw IDE met de rechtermuisknop op het bestand dat u wilt lezen en kies “pad kopiëren”
plak het dan in je code.

Houd er rekening mee dat Windows de bestandsextensie verbergt, dus als u een tekstbestand “mijnbestand.txt” maakt, kan het daadwerkelijk worden opgeslagen als “mijnbestand.txt.txt”


Antwoord 5, autoriteit 27%

Over het algemeen betekent het vermelden van de naam van het bestand in de bestandsconstructor dat het bestand zich in dezelfde map bevindt als het java-bestand. Bij gebruik van IDE’s zoals NetBeans en Eclipse, d.w.z. niet het geval dat u het bestand in de map met de projectmap moet opslaan. Dus ik denk dat het je probleem zal oplossen door dat te controleren.


Antwoord 6, autoriteit 9%

Hoe voer je het programma uit?

Het is niet het Java-bestand dat wordt uitgevoerd, maar het .class-bestand dat wordt gemaakt door de Java-code te compileren. Je moet ofwel het absolute pad specificeren zoals user1420750 zegt of een relatief pad naar je System.getProperty("user.dir") directory. Dit zou de werkdirectory moeten zijn of de directory van waaruit u het java-commando hebt uitgevoerd.


Antwoord 7, autoriteit 9%

Eerst Maak map hetzelfde als het pad dat u hebt opgegeven. maak daarna Bestand

File dir = new File("C:\\USER\\Semple_file\\");
File file = new File("C:\\USER\\Semple_file\\abc.txt");
if(!file.exists())
{
    dir.mkdir();
    file.createNewFile();
    System.out.println("File,Folder Created.);
}

Antwoord 8

Als je een jar uitvoert, wordt je hoofdklasse zelf args[0] en komt je bestandsnaam direct daarna.

Ik had hetzelfde probleem: ik kon mijn bestand lokaliseren als ik het absolute pad van eclipse opgaf (omdat ik naar het bestand verwees als args[0]). Maar toen ik hetzelfde uitvoerde vanuit jar, probeerde het mijn hoofdklasse te lokaliseren – en toen kreeg ik het idee dat ik mijn bestand uit args[1] zou moeten lezen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes