Подтвердить что ты не робот

Чтение .txt файла с использованием класса Scanner в Java

Я работаю над программой Java, которая читает текстовый файл по строкам, каждый с номером, каждый номер выдает его в массив, затем пытается и использует сортировку вставки для сортировки массива. Мне нужна помощь в том, чтобы программа читала текстовый файл.

Я получаю следующие сообщения об ошибках:

java.io.FileNotFoundException: 10_Random (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
at insertionSort.main(insertionSort.java:14)

У меня есть копия .txt файла в моем "src" "bin" и основной папке проекта, но он все еще не может найти файл. Кстати, я использую Eclipse.

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

public class insertionSort {

public static void main(String[] args) {

    File file = new File("10_Random");

    try {

        Scanner sc = new Scanner(file);

        while (sc.hasNextLine()) {
            int i = sc.nextInt();
            System.out.println(i);
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
 }
}
4b9b3361

Ответ 1

Вы должны указать расширение файла здесь

File file = new File("10_Random.txt");

Ответ 2

Используйте следующие коды для чтения файла

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

public class ReadFile {

    public static void main(String[] args) {

        try {
            System.out.print("Enter the file name with extension : ");

            Scanner input = new Scanner(System.in);

            File file = new File(input.nextLine());

            input = new Scanner(file);


            while (input.hasNextLine()) {
                String line = input.nextLine();
                System.out.println(line);
            }
            input.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

- > Это приложение печатает содержимое файла по строке

Ответ 3

  • Убедитесь, что имя файла верное (правильная заглавная буква, соответствующее расширение и т.д. - как уже было предложено).

  • Используйте метод Class.getResource для поиска вашего файла в пути к классам - не полагайтесь на текущий каталог:

    URL url = insertionSort.class.getResource("10_Random");
    
    File file = new File(url.toURI());
    
  • Укажите абсолютный путь к файлу с помощью аргументов командной строки:

    File file = new File(args[0]);
    

В Eclipse:

  • Выберите "Запустить конфигурации"
  • Перейдите на вкладку "Аргументы".
  • Поместите свой "c:/my/file/is/here/10_Random.txt.or.whatever" в раздел "Параметры программы"

Ответ 4

Никто, кажется, не обратил внимание на то, что вы ничего не вписываете в массив. Вы устанавливаете каждый int, который читается на "i", а затем выводит его.

for (int i =0 ; sc.HasNextLine();i++)
{
    array[i] = sc.NextInt();
}

Что-то в этом случае сохранит значения массива для следующего целого числа.

Чем другой цикл цикла может отображать числа в массиве.

for (int x=0;x< array.length ; x++)
{
    System.out.println("array[x]");
}

Ответ 5

  • Вам нужно указать точное имя файла, включая расширение файла, например. 10_Random.txt.
  • Файл должен находиться в том же каталоге, что и исполняемый файл, если вы хотите ссылаться на него без какого-либо явного пути.
  • Пока мы на нем, вам нужно проверить int перед чтением int. Невозможно проверить с помощью hasNextLine(), а затем ожидать int с nextInt(). Вы должны использовать hasNextInt(), чтобы проверить, что на самом деле есть int для захвата. Разумеется, как строго вы выбираете принудительное применение одного целого числа в линейном правиле.

Ответ 6

Путь к файлу Кажется, что здесь проблема, убедитесь, что файл существует в правильной директории или укажите абсолютный путь, чтобы убедиться, что вы указываете на правильный файл. Пожалуйста, зарегистрируйте файл .getAbsolutePath(), чтобы убедиться, что файл верен.

Ответ 7

Вот некоторые рабочие и проверенные методы,

using Scanner

package io;

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

public class ReadFromFileUsingScanner {
    public static void main(String[] args) throws Exception {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        Scanner sc=new Scanner(file);
        while(sc.hasNextLine()){
            System.out.println(sc.nextLine());
        }
    }
}


Здесь другой способ прочитать весь файл (без цикла) с помощью Scanner class

package io;

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

public class ReadingEntireFileWithoutLoop {
    public static void main(String[] args) throws FileNotFoundException {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        Scanner sc=new Scanner(file);
        sc.useDelimiter("\\Z");
        System.out.println(sc.next());
    }
}

используя BufferedReader

 package io;
import java.io.*;
public class ReadFromFile2 {
    public static void main(String[] args)throws Exception {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        BufferedReader br=new BufferedReader(new FileReader(file));
        String st;
        while((st=br.readLine())!=null){
            System.out.println(st);
        }
    }
}

using FileReader

package io;
import java.io.*;
public class ReadingFromFile {
    public static void main(String[] args) throws Exception {
        FileReader fr=new FileReader("C:\\Users\\pankaj\\Desktop\\test.java");
        int i;
        while((i=fr.read())!=-1){
            System.out.print((char) i);
        }
    }
}

Ответ 8

private void loadData() {

    Scanner scanner = null;
    try {
        scanner = new Scanner(new File(getFileName()));
        while (scanner.hasNextLine()) {
            Scanner lijnScanner = new Scanner(scanner.nextLine());

            lijnScanner.useDelimiter(";");
            String stadVan = lijnScanner.next();
            String stadNaar = lijnScanner.next();
            double km = Double.parseDouble(lijnScanner.next());

            this.voegToe(new TweeSteden(stadVan, stadNaar), km);

        }
    } catch (FileNotFoundException e) {
        throw new DbException(e.getMessage(), e);
    } finally {
        if(scanner != null){
            scanner.close();
        }
    }
}

Ответ 9

Файл, который вы читаете, должен иметь точно указанное имя файла: "10_random" not "10_random.txt" не "10_random.blah", он должен точно соответствовать тому, что вы просите. Вы можете изменить один из них так, чтобы они совпадали, но просто убедитесь, что они это делают. Это может помочь показать расширения файлов в любой операционной системе, которую вы используете.

Кроме того, для размещения файла он должен находиться в рабочем каталоге (том же уровне), что и конечный исполняемый файл (файл .class), который является результатом компиляции.

Ответ 10

Сначала проверьте адрес файла, он должен находиться рядом с вашим файлом .java или любым адресом, который вы определяете в переменной среды classpath. Когда вы проверите это, попробуйте ниже.

  • вы должны использовать имя файла по его расширению в конструкторе объекта File в качестве примера:

    File myFile = new File("test.txt");

  • но есть лучший способ использовать его внутри объекта Scanner, передав абсолютный адрес имени файла, в качестве примера:

    Scanner sc = new Scanner(Paths.get("test.txt"));

таким образом вы также должны импортировать java.nio.file.Paths.

Ответ 11

Вы должны использовать

File file = new File("bin/10_Random.txt");

Или

File file = new File("src/10_Random.txt");

Относительно папки проекта в Eclipse.