#java
#java
Вопрос:
Я пытаюсь использовать метод «public boolean readArtists» со сканером для чтения строк из файла и возврата true в случае успешного открытия. Предполагается, что этот метод также «добавляет в список всех исполнителей, сохраненных в переданном файле параметра».
Я видел, как написать код в общедоступном статическом методе void, который будет считывать текстовый файл и возвращать его:
public static void main(String[] args) {
File file = new File("artists30.txt");
String content = null;
try {
try (Scanner scanner = new Scanner(file, StandardCharsets.UTF_8.name())) {
content = scanner.useDelimiter("\A").next();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(content);
}
Вот тест:
Я должен сохранить метод «public boolean readArtists(String filename), поэтому мой вопрос заключается в том, в рамках этого метода, как мне прочитать содержимое текстового файла в ArrayList с помощью сканера, а также возвращая true, если файл успешно открыт, в противном случае, обрабатывая исключение, отображаясоответствующее сообщение об ошибке, содержащее имя отсутствующего файла и возвращающее значение false.
Комментарии:
1. когда вы говорите, что успешно открыто, вы имеете в виду вернуть true, если файл существует, и false, если его нет?
2. Да, это то, что я имел в виду
Ответ №1:
public class Artists{
public static ArrayList<String> artists = new ArrayList<String>();
public static void main(String[] args) {
System.out.println(readArtists("filename goes here"));
System.out.println(artists);
}
public Artists(String artist, String genre)
{
}
public static boolean readArtists(String fileName) {
Scanner sc = null;
try {
File file = new File(fileName);
if(file.createNewFile()) {
System.out.println("err " fileName);
return false;
}
sc = new Scanner(file);
while(sc.hasNextLine()) {
artists.add(sc.nextLine());
}
}catch(Exception e) {
e.printStackTrace();
}
if(sc!=null) {sc.close();}
return true;
}
}
Этот ответ считывает данные из документа .txt в ArrayList, если имена документов .txt находятся в отдельных строках документа. Он также выводит err FILENAME
и возвращает false, если документ не существует, и true, если он существует. https://www.w3schools.com/java/java_files.asp кстати, это отличный веб-сайт для изучения Java, и эта ссылка приведет вас на страницу обработки файлов.
Комментарии:
1. это работает до тех пор, пока ваш файл .txt отформатирован правильно (т. Е. каждое имя находится в отдельной строке, а не в одной непрерывной строке), вы можете изменить его для поддержки других форматов, однако я считаю, что таким образом проще копировать имена с веб-сайтов в файлы .txt
2. о, и
artists
это глобальная переменная3. Я только что обновил его, теперь он должен поддерживать переменную artists
4. просто введите имя вашего файла, где написано
file name goes here
@ChocolateGoosePoosey5. Никогда не видел это сообщение об ошибке: «Примечание: Artists.java использует непроверенные или небезопасные операции «.
Ответ №2:
Вы можете добиться этого с помощью,
public static void main(String[] args) throws FileNotFoundException {
String filepath = "C:\Users\Admin\Downloads\testFile.txt";
List<String> arrayList = new ArrayList<>();
if(readArtists(filepath)) {
Scanner sc = new Scanner(new File(filepath));
sc.useDelimiter("\A");
while(sc.hasNext()) {
arrayList.add(sc.next());
}
}
System.out.println(arrayList);
}
public static boolean readArtists(String filename)
{
File file = new File(filename); //full path of the file with name
return file.canRead();
}
Комментарии:
1. Я вижу. Но как мне поместить содержимое этого файла в список массивов?
2. @ChocolateGoosePoosey Я обновил код, пожалуйста, ознакомьтесь с ним.