Чтение CSV-файла (система не может найти указанный файл) - PullRequest
0 голосов
/ 19 мая 2018

Я уже вижу этот вопрос и похожие вопросы, но моя проблема в том, что до недавнего времени он работал нормально.Где я неправ?Это небольшой пример, который я сделал, чтобы понять, как прочитать файл .csv и передать значения в нем чему-то другому, прежде чем реализовывать его в более крупном приложении.

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

    public class Main {


public static void main(String[] args) {

    String fileName = "data.csv";
    File file = new File(fileName);

    try {
        Scanner inputStream = new Scanner(file);
        inputStream.next();//Ignore first line
        while(inputStream.hasNext()) {
            String data = inputStream.next();//gets a whole line
            //create a string array where value at 0 is the name, value at 1 is the quantity, and value at 2 is the price
            String[] values = data.split(",");
            int quantity = Integer.parseInt(values[1]);
            System.out.println(values[0] + "\n" + quantity + "\n" + values[2]);
        }
        inputStream.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}}

Я пошел на этодля моей более крупной программы, и это дало мне ошибку «страница не найдена», и когда я дважды проверил этот проект, он также не запустился.Это дает мне ту же ошибку.Я перезапустил Eclipse и проверил несколько раз, чтобы выяснить, случайно ли я что-то упустил или что-то изменил.data.csv прямо в моей папке src.Я даже закопал его, чтобы он появился в виде проекта Eclipse.Чего мне не хватает?

Name,Quantity,Price Tea,100,2.50 Coke,50,2.50 Lays,32,1.00 Cheetos,34,1.10 Snickers,30,1.25 Butterfinger,70,1.50 Five,40,0.75 Orbits,50,0.90

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Ну, я не уверен, почему "data.csv" перестал работать, но я изменил путь на "src/data.csv", и он работает нормально.Возникает вопрос: почему это работает один момент, а не следующий?

0 голосов
/ 19 мая 2018

Это ограничено самым простым и мощным способом использования opencsv, чтобы вы могли начать работу.

Для чтения создайте bean-компонент для хранения информации, которую вы хотите прочитать, аннотируйте поля bean-компонентовс аннотациями opencsv сделайте следующее:

List<MyBean> beans = new CsvToBeanBuilder(FileReader("yourfile.csv"))
   .withType(Visitors.class).build().parse();

Для записи создайте bean-компонент для хранения информации, которую вы хотите записать, аннотируйте поля bean-компонентов аннотациями opencsv, а затем сделайте следующее:

// List<MyBean> beans comes from somewhere earlier in your code.
 Writer writer = new FileWriter("yourfile.csv");
 StatefulBeanToCsvBuilder beanToCsv = StatefulBeanToCsvBuilder(writer).build();
 beanToCsv.write(beans);
 writer.close();

Скажем, вы используете вкладку для своего разделителя, вы можете сделать что-то вроде этого:

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

или для чтения с аннотациями:

CsvToBean csvToBean = CsvToBeanBuilder(new FileReader("yourfile.csv"))
       .withSeparator('\t').build();

И если выодиночные кавычки ваших экранированных символов, а не двойные кавычки, вы можете использовать конструктор с тремя аргументами:

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

или для чтения с аннотациями:

CsvToBean csvToBean = CsvToBeanBuilder(new FileReader("yourfile.csv"))
       .withSeparator('\t').withQuoteChar('\'').build();

В самых основныхВы можете использовать opencsv для анализа ввода и возврата строки [], таким образом:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
     String [] nextLine;
     while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...