O sistema não consegue encontrar o ficheiro indicado em java
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());
}
}
}
Mas quando corro, tenho este erro:
C:\Users\User\Documents\Workspace\FileRead\hello.txt
Error: hello.txt (The system cannot find the file specified)
My FileRead.java
and hello.txt
where in the same directory that can be found in:
C:\Users\User\Documents\Workspace\FileRead
Pergunto-me o que estou a fazer de errado?
8 answers
Tente listar todos os nomes dos ficheiros no directório, chamando:
File file = new File(".");
for(String fileNames : file.list()) System.out.println(fileNames);
E vê se encontras os teus ficheiros na lista.
Geralmente, apenas indicando o nome do ficheiro dentro do construtor de Ficheiros significa que o ficheiro está localizado no mesmo directório que o ficheiro java. No entanto, ao usar IDEs como NetBeans e Eclipse, ou seja, não o caso você tem que salvar o arquivo no diretório de pasta de projeto. Por isso, acho que verificar isso vai resolver o teu problema.
No seu IDE, carregue com o botão direito no ficheiro que deseja ler e escolha "Copiar o caminho" então cole - o no seu código.
Lembre-se que o windows esconde a extensão do ficheiro, por isso, se criar um ficheiro de texto "myfile.txt pode ser realmente salvo como "myfile".txt.txt
Tem de indicar o nome do local absoluto para onde o ficheiro existe.
File file = new File("C:\\Users\\User\\Documents\\Workspace\\FileRead\\hello.txt");
Não é o ficheiro java que está a ser executado, mas sim o .class file that is created by compiling the java code. Terá de indicar a localização absoluta, como diz O user1420750, ou uma localização relativa à sua pasta System.getProperty("user.dir")
. Esta deve ser a pasta de trabalho ou a pasta de onde você executou o comando java.
Eu tinha o mesmo problema: eu poderia localizar o arquivo, quando fornecido o caminho absoluto do eclipse (porque eu estava me referindo ao arquivo como args[0]). No entanto, quando Eu corro o mesmo de jar, ele estava tentando localizar minha classe principal - que é quando eu tive a idéia de que eu deveria estar lendo o meu arquivo de args[1].
Primeiro crie a pasta da mesma forma que indicou. depois disso, criar o ficheiro
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.);
}