-1

我正在尝试在 Eclipse 中将 java 文件作为命令行参数传递。但是,每一次,它都会抛出FileNotFoundException并显示错误 - Product.java(系统找不到指定的文件)。我将此产品文件与我的主要 java 文件放在同一个包中。还要提一点,我正在使用FileReader. BufferedReader在我的程序中读取该文件。有什么我想念的吗?

包 com.assign6.keyword.count;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CountKeywords {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String[] accessifiers = {"public", "protected", "private"};

        // Put each keyword in map with key
        Map<String, Integer> theKeyWordCount = new HashMap<String, Integer>();

        for( String str : accessifiers ){
            theKeyWordCount.put(str, 0);
            // Where str is key and 0 is value of Map
        }

        FileReader fr;
        BufferedReader br;
        File file = new File(args[0]);

        System.out.println(file);
        // Open and read the file

        try {

            fr = new FileReader(file);
            br = new BufferedReader(fr);

            String line;

            while( ( line = br.readLine() ) != null ){

                if( line.length() != 0 ){

                    if( theKeyWordCount.containsKey(line) ){

                        theKeyWordCount.put(line, theKeyWordCount.get(line)+1 );
                    }
                }
            }

        } catch (FileNotFoundException e) {
            // File not found
            e.printStackTrace();

        } catch (IOException e) {
            // Not able to read line
            e.printStackTrace();
        }

        System.out.println(theKeyWordCount);

    }// end main method

}
4

2 回答 2

1

我将此产品文件与我的主要 java 文件放在同一个包中。

这并不真正相关。相反,您希望在运行程序Product.java时位于当前工作目录中。(例如,如果您将程序运行为,那么您需要位于包含 的文件夹中。)java -jar path/to/program.jarProduct.javapath

于 2013-07-20T19:58:51.803 回答
0

如果您尝试执行以下代码并假设您的CountKeywords位于/home/username/javaProject文件夹中:

package com.assign6.keyword.count

public class CurrentDirectoryTest {
    public static void main(String[] args) {
        System.out.println("Working Directory = "
         + System.getProperty("user.dir"));
    }
}

你应该得到:

Working Directory = /home/username/javaProject

这意味着 Java 在内部javaProject而不是内部查找您的文件

/home/username/javaProject/com/assign6/keyword/count

为了让您的课程正常工作,您需要:

  • 将文件移动到文件/home/username/javaProject

或者

  • 指定相关的路径javaProject。在你的情况下,这意味着com/assign6/keyword/count/Product.java
于 2013-07-20T21:52:26.213 回答