Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在Ubuntu18.04中获取FileNotFoundException_Java_File_Ubuntu_Ubuntu 18.04_Filenotfoundexception - Fatal编程技术网

使用Java在Ubuntu18.04中获取FileNotFoundException

使用Java在Ubuntu18.04中获取FileNotFoundException,java,file,ubuntu,ubuntu-18.04,filenotfoundexception,Java,File,Ubuntu,Ubuntu 18.04,Filenotfoundexception,编译我的java程序似乎工作正常,但当我尝试使用一个文件作为字符串[]args之一运行它时,我得到一个file not found异常。但是,该文件存在于目录中,我已经对拼写进行了三次检查。以下是我想做的: 这里的目录清楚地显示了我的文件 当我在这个目录上执行ls命令时,只显示我的.java和.class文件。没有.txt文件。这和我的问题有关吗? 有人能帮忙吗 编辑:我试图运行的文件的代码 import java.io.File; import java.io.FileNotFound

编译我的java程序似乎工作正常,但当我尝试使用一个文件作为字符串[]args之一运行它时,我得到一个file not found异常。但是,该文件存在于目录中,我已经对拼写进行了三次检查。以下是我想做的:

这里的目录清楚地显示了我的文件

当我在这个目录上执行ls命令时,只显示我的.java和.class文件。没有.txt文件。这和我的问题有关吗?

有人能帮忙吗

编辑:我试图运行的文件的代码

import java.io.File; 
import java.io.FileNotFoundException;
import java.util.Scanner; 
public class cs3421_emul {
    public static void main(String[] args) {
        try {
            String directory = System.getProperty("user.dir");
            directory = directory.replace("\\", "\\\\");
            //File file = new File(directory + "/" + args[0]);
            File file = new File(args[0]);
            Scanner sc = new Scanner(file);
            StreamHandler stream = new StreamHandler(sc);
            while(sc.hasNext()) {
                String datatype = sc.next();
                switch(datatype) {
                    case("memory"):
                        stream.HandleMemory();
                    break;
                    case("clock"):
                        stream.HandleClock();
                    break;
                    case("cpu"):
                        stream.HandleCPU();
                    break;
                }
            }
            sc.close();
        }
        catch(FileNotFoundException e) {
            System.out.print(e);
        } 
        /*
        String size = "0x10000";
        //System.out.println("resolve substring issue " + size.substring(2));
        Memory test = new Memory(size);
        test.reset();
        String[] hexvalues = {"0x0A", "0x0B", "0x2A", "0x2B", "0x11", "0x44", "0x23", "0x93", "0x50", "0x22", "0xAE", "0xDE", "0xAD", "0xBE", "0xEF", "0xFF"};
        test.set("0x1A00", "0x10", hexvalues);
        String[] hexvalues1 = {"0xAE", "0xDE", "0xAD", "0xC0", "0xDE", "0FA", "0xCE", "0xFE", "0xED", "0xCA", "0xFE", "0xBE", "0xEF", "0x30", "0xA8", "0xEE"};
        test.set("0x1A10", "0x10", hexvalues1);
        String[] hexvalues2 = {"0x55", "0xAA", "0x10", "0x20"};
        test.set("0x1A20", "0x04", hexvalues2);
        test.dump("0x1A04", "0x20");
        //String[] testmemory = test.getMemory();
         */
    }

}

确保您完全按照文件名编写文件名。因为Linux是区分大小写的,例如,如果您有一个名为“Sample”的文件,并且您试图打开“Sample”文件,则会出现错误


我想你和我有同样的问题。检查一下

这里发生了一些非常令人困惑的事情

  • 您的第一个屏幕截图显示您正在运行一个名为
    cs3421\u emul
    的类。我认为这与源代码相对应。它显示您所在的目录名为
    /home/se/cs3421\u emul

    假设您没有做一些非常奇怪的事情,当您运行该命令时,该目录将是当前目录(根据此屏幕截图)

  • 第二个屏幕截图是一个目录视图,描述为
    LocalState>rootfs>home>se>cs3421\u emul
    。该目录列表显示了一个名为
    Sample1\u input.txt
    的文件。它不显示名为
    cs3421\u emul.class
    file的文件

  • 第三个屏幕截图是在
    /home/se/cs3421\u emul
    中运行
    ls
    的输出。它显示了
    cs3421\u emul.class
    文件。它不显示名为
    Sample1\u input.txt的文件

  • 由此,我只能得出结论,第二个屏幕截图中的目录与运行
    ls
    (屏幕截图三)和尝试使用
    java
    命令运行程序(屏幕截图一)时的当前目录不同

    现在我不知道你在第二张截图中向我们展示了什么。这是一个映射到Linux的Windows文件系统的视图吗?或者它是您正在复制到Linux系统的目录

    不管怎样,截图一和截图三都是确定的。他们从Linux的角度展示了Linux文件系统。从这个角度来看,在
    /home/se/cs3421\u emul
    目录中没有
    Sample1\u input.txt
    文件。那里根本没有
    *.txt
    文件

    在Linux系统上运行类似的
    java
    命令时,JVM需要在
    /home/se/cs3421\u emul
    目录中查看名为
    Sample1\u input.txt
    的文件。如果不存在,则会导致
    FileNotFound
    异常,其消息与您收到的消息相同


    您需要弄清楚为什么文件
    Sample1_input.txt
    不在
    ls
    输出中;i、 为什么文件不在那里

    “当我在这个目录上执行ls命令时,只显示.java和.class文件。没有.txt文件。这可能与我的问题有关吗?”这就是问题所在。您确定Windows资源管理器屏幕截图中的目录(您不是在使用Ubuntu吗?)与运行程序的目录相同吗?这似乎不是问题所在。从第三个屏幕截图中可以看到,该文件实际上不在该目录中。