除非我指定绝对路径(C:\ User \ Documents等),否则FileInputStream(“hello.txt”)不起作用

时间:2012-09-13 12:31:49

标签: java fileinputstream

嗨有没有办法让FileInputStream在同一目录中读取hello.txt而不指定路径?

package hello/
    helloreader.java
    hello.txt

我的错误讯息:Error: .\hello.txt (The system cannot find the file specified)

5 个答案:

答案 0 :(得分:10)

您可以使用相对路径读取文件,如。

File file = new File("./hello.txt");
  • YourProject

    - >仓

    - > hello.txt的

    - >的.classpath

    - >的.project

这是作品

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class fileInputStream {

    public static void main(String[] args) {

        File file = new File("./hello.txt");
        FileInputStream fis = null;

        try {
            fis = new FileInputStream(file);

            System.out.println("Total file size to read (in bytes) : "
                    + fis.available());

            int content;
            while ((content = fis.read()) != -1) {
                // convert to char and display it
                System.out.print((char) content);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fis != null)
                    fis.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

答案 1 :(得分:9)

您可以使用YourClassName.class.getResourceAsStream("Filename.txt"),但您的文本文件必须与YourClassName文件位于同一目录/包中。

答案 2 :(得分:3)

当您打开“hello.txt”时,您将在该进程的当前working directory中打开一个文件。即从哪里运行程序,而不是你的jar或其他目录。

答案 3 :(得分:2)

使用路径hello.txt打开文件时,文件hello.txt应位于执行java命令的同一目录中,即工作目录。在运行Java程序时,可以使用以下代码打印工作目录:

System.out.println(System.getProperty("user.dir"));

假设您执行了像java hello.helloreader这样的代码,那么您应该使用以下路径来获取hello.txt

new FileInputStream("hello/hello.txt")

答案 4 :(得分:0)

您可以尝试使用System.getProperty(" dir")来显示当前目录,并且您将知道如何编写文件路径