-1

我正在尝试引用存储在我的工作目录中的文件,以便可以使用开源例程“opencsv”读取和解析它。

以下行给出了 FileNotFoundException 错误:

CSVReader reader = new CSVReader(new FileReader("file.csv"), '\t');

我已经使用以下内容检查了工作目录:

String curDir = System.getProperty("user.dir");

这将返回值“\”,因此我已将文件“file.csv”放在项目的根目录中。我正在使用 Eclipse。有问题的文件不是只读的,设置为“存档”并且未标记为“派生”。

很明显,我是 Java 新手。在 Google 上搜索此问题表明我需要更改文件权限,但我想知道我是否遗漏了其他内容。我知道解决方案可能非常明显:S

这是完整的代码:

package mjd.listview.test;

import java.io.FileReader;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import au.com.bytecode.opencsv.CSVReader;

public class ListProjectActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      CSVReader reader = new CSVReader(new FileReader("file.csv"), '\t');
        List<String[]> myEntries = reader.readAll();


      String[] terms = getResources().getStringArray(R.array.terms_array);
      setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, terms));

      ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();
        }
      });
    }

}
4

2 回答 2

1

要查找工作目录,请不要使用System.getProperty("user.directory"). 使用new File(".").getCanonicalPath(). 这将打印当前工作目录的规范(绝对和唯一)路径。

于 2012-05-31T00:51:15.133 回答
0

不要假设你的项目的根目录等同于\. 如果是的话,我会感到惊讶。中报告的实际路径是FileNotFoundException什么?这会告诉你 Java 在哪里寻找文件。

我使用 IntelliJ 而不是 Eclipse,但在 IntelliJ 中有一个运行配置屏幕,您可以在其中设置 JVM 参数、命令行参数和工作目录。我假设 Eclipse 有类似的东西。看看它是怎么设置的。然后将其更改为您实际拥有文件的位置或将文件移动到设置的位置。

于 2012-05-31T00:21:04.730 回答