Android CSV导入问题

Android CSV导入问题,android,sqlite,csv,Android,Sqlite,Csv,我正在尝试将CSV文件读入我的SQLite数据库。我目前正在使用一个按钮来运行该方法,因为我不确定在哪里调用它,所以它将在应用程序启动时加载数据。当我在启动屏幕的创建中调用它时,出现了一个问题 这就是错误所在 原因:java.io.FileNotFoundException:C:/Users/b00619342/Downloads/VegT(DBCodedNeedPreSetD)/app/src/main/assets/brekfasttable.csv:open failed:enoint(无

我正在尝试将CSV文件读入我的SQLite数据库。我目前正在使用一个按钮来运行该方法,因为我不确定在哪里调用它,所以它将在应用程序启动时加载数据。当我在启动屏幕的创建中调用它时,出现了一个问题

这就是错误所在

原因:java.io.FileNotFoundException:C:/Users/b00619342/Downloads/VegT(DBCodedNeedPreSetD)/app/src/main/assets/brekfasttable.csv:open failed:enoint(无此类文件或目录)

这是密码

public void brekCSV() throws IOException {

    String[] row = null;
    //need to change when the project is moved to a new location
    String csvBrek = "C:/Users/b00619342/Downloads/VegT(DBCodedNeedPreSetD)/app/src/main/assets/brekfasttable.csv";

    SQLiteDatabase db = getWritableDatabase();

    BufferedReader br = new BufferedReader(new FileReader(csvBrek));

    String line;
    while ((line = br.readLine()) != null) {
        String[] tokens = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);

        db.execSQL("INSERT INTO " + TABLE_BREK +
                "VALUES(" + tokens[0] + "," + tokens[1] + "," + tokens[2] + "," + tokens[3] + "," + tokens[4] + "," + tokens[5] + "," + tokens[6] + ")");
    }

    db.close();

}//end of brekCSV

您的Android设备不是Windows桌面。没有“C:”。您需要将文件放在设备上,并使用正确的路径指向代码运行的位置。

使用以下代码在缓冲区读取器中读取文件

String filename="brekfasttable.csv";
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(getApplicationContext().getAssets().open(filename)));
        } catch (IOException e) {
            e.printStackTrace();
        }


抱歉,我目前正在使用Android Studio的模拟器!模拟设备仍然不是您的Windows桌面PC。模拟器模拟真实设备的整个硬件并运行Android操作系统。它不知道托管模拟器的Windows系统。它就像一个真实的设备,不需要支付硬件费用。你可以使用它将文件从Windows系统复制到(模拟)设备的SD卡上。啊,我现在明白了。那么我该如何在代码方面做到这一点呢?你的Android应用程序无法从其他设备(如Windows桌面)获取文件。您需要使用adb将文件放到设备上。或者将文件放在web服务器上并使用设备下载(如果您知道文件的宿主位置,可以从应用程序中下载)。现在尝试此操作,获取“无法解析符号上下文”确定,用活动名称替换上下文没有问题。这类似于ActivityA。thisMy Activity称为Main Menu,这就是我所做的,但是GetAssets现在给了我一个错误。BufferedReader br=新的BufferedReader(新的InputStreamReader(mainMenu.getAssets().open(filename));真的,你有主菜单活动,因为你的活动名称应该以小写开头,这不好,在我的评论上面,我在活动名称后面写了点这个,像main menu.thisso现在是main menu.this.open(filename))??
String filename="brekfasttable.csv";
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(mainMenu.this.getAssets().open(filename)));
        } catch (IOException e) {
            e.printStackTrace();
        }