存在Java FileNotFoundException文件(Android)

时间:2012-05-31 00:16:03

标签: java android filenotfoundexception

我正在尝试引用存储在我的工作目录中的文件,因此可以使用开源例程'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();
        }
      });
    }

}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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