1

.csv ファイルを読み取るスキャナーがあります。
ファイルは同じディレクトリと .java ファイルにありますが、ファイルが見つからないようです。
この問題を解決するにはどうすればよいですか?

Scanner scanner = new Scanner(new File("database.csv"));

編集:次の行で区切り文字を使用するため、スキャナーパッケージを使用する必要があることを忘れていました。

Scanner scanner = new Scanner(new File("database.csv"));
scanner.useDelimiter(",|\r|\n");

また、私はIntelliJIDEAで働いています

ここに完全なコードがあります

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.*;

public class City
{
public String name; // The name of the city
public String cont; // The continent of the city
public int relTime; // Time relative to Hobart (eg. -14 for New York)
public boolean dst; // Does the city use DST?
public boolean valid; // Does the city exist?
Date currDate;

City(){}; // Default constructor
City(String name, String cont, int relTime)
{
    this.name = name;
    this.cont = cont;
    this.relTime = relTime;
    valid = verify();

    if(valid)
    {
        currDate = new Date(System.currentTimeMillis() + (3600000 * relTime));
    }
}

City(String name, String cont, int relTime, int dstStartDay, int dstEndDay)
{
    this.name = name;
    this.cont = cont;
    this.relTime = relTime;
    valid = verify();

    if(valid)
    {
        currDate = new Date(System.currentTimeMillis() + (3600000 * relTime));
        // Is DST in effect?
        if(currDate.after(new Date(currDate.getYear(), 3, dstStartDay, 2, 0)) &&
                currDate.before(new Date(currDate.getYear(), 11, dstEndDay, 2, 0)))
        {
            // It is... so
            relTime--;
        }
    }
}

private boolean verify()
{
    valid = false;

    try
    {
        Scanner scanner = new Scanner(new File("\\src\\database.csv"));
        scanner.useDelimiter(",|\r|\n");
        while(scanner.hasNext())
        {
            String curr = scanner.next();
            String next = new String();
            if(scanner.hasNext())
                next = scanner.next();
            if(curr.contains(cont) && next.contains(name))
                return true;
        }
        scanner.close();
    }
    catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }

    return false;
}
}
4

4 に答える 4

2

相対ファイルを作成または読み取る場合、パスは指定されuser.dirた. Eclipse では、多くの場合、これがプロジェクトのルートになります。

user.dir次のように印刷できます。

System.out.println(System.getProperty("user.dir"));

database.csvこれは、プログラムがファイルを探している場所です。このディレクトリにファイルを追加するか、絶対パスを使用してください。

于 2013-05-26T23:00:51.610 に答える
0

プロジェクトのルート フォルダーから始まるファイルの完全なパスを追加します。

たとえば。

Test は、Eclipse での私のプロジェクト名です。だから私は書いているはずです

File csvFile = new File("src\\database.csv");

于 2013-05-26T23:17:09.750 に答える