Ответ 1
Вы должны указать расширение файла здесь
File file = new File("10_Random.txt");
Я работаю над программой 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();
}
}
}
Вы должны указать расширение файла здесь
File file = new File("10_Random.txt");
Используйте следующие коды для чтения файла
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();
}
}
}
- > Это приложение печатает содержимое файла по строке
Убедитесь, что имя файла верное (правильная заглавная буква, соответствующее расширение и т.д. - как уже было предложено).
Используйте метод Class.getResource
для поиска вашего файла в пути к классам - не полагайтесь на текущий каталог:
URL url = insertionSort.class.getResource("10_Random");
File file = new File(url.toURI());
Укажите абсолютный путь к файлу с помощью аргументов командной строки:
File file = new File(args[0]);
В Eclipse:
Никто, кажется, не обратил внимание на то, что вы ничего не вписываете в массив. Вы устанавливаете каждый 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]");
}
10_Random.txt
.int
перед чтением int
. Невозможно проверить с помощью hasNextLine()
, а затем ожидать int
с nextInt()
. Вы должны использовать hasNextInt()
, чтобы проверить, что на самом деле есть int
для захвата. Разумеется, как строго вы выбираете принудительное применение одного целого числа в линейном правиле.Путь к файлу Кажется, что здесь проблема, убедитесь, что файл существует в правильной директории или укажите абсолютный путь, чтобы убедиться, что вы указываете на правильный файл. Пожалуйста, зарегистрируйте файл .getAbsolutePath(), чтобы убедиться, что файл верен.
Вот некоторые рабочие и проверенные методы,
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);
}
}
}
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();
}
}
}
Файл, который вы читаете, должен иметь точно указанное имя файла: "10_random"
not "10_random.txt" не "10_random.blah", он должен точно соответствовать тому, что вы просите. Вы можете изменить один из них так, чтобы они совпадали, но просто убедитесь, что они это делают. Это может помочь показать расширения файлов в любой операционной системе, которую вы используете.
Кроме того, для размещения файла он должен находиться в рабочем каталоге (том же уровне), что и конечный исполняемый файл (файл .class), который является результатом компиляции.
Сначала проверьте адрес файла, он должен находиться рядом с вашим файлом .java
или любым адресом, который вы определяете в переменной среды classpath
. Когда вы проверите это, попробуйте ниже.
вы должны использовать имя файла по его расширению в конструкторе объекта File в качестве примера:
File myFile = new File("test.txt");
но есть лучший способ использовать его внутри объекта Scanner, передав абсолютный адрес имени файла, в качестве примера:
Scanner sc = new Scanner(Paths.get("test.txt"));
таким образом вы также должны импортировать java.nio.file.Paths
.
Вы должны использовать
File file = new File("bin/10_Random.txt");
Или
File file = new File("src/10_Random.txt");
Относительно папки проекта в Eclipse.