2014-11-11 1 views
0

Мне нужно использовать PrintWriter в Java, чтобы прочитать документ, сохраненный на компьютере, и напечатать его в массиве. Мы должны использовать скелет и разработать наш код. Я думаю, что понимаю концепцию, за исключением того, что компилятор продолжает говорить мне, что файл не существует. Я думаю, проблема может заключаться в том, что у меня есть iMac, и у него нет диска c, по крайней мере, не помеченного таким образом. Что я делаю не так? Я включил код в свой код до сих пор ...PrintWriter в Java, Не удается найти ошибку файла

import java.io.PrintWriter; 
import java.io.File; 
import java.util.*; 
import java.text.*; 

public class pWriter{ 

    public static void main(String[]args) throws Exception{ 

     Scanner stdln = new Scanner(new File("c://FileName.txt)); 

     String[] line = new String[238]; 

     while (stdln.hasNextLine()){ 
      int i = 0; 
      line[i] = stdln.nextLine(); 
      i++; 
     } 
    } 
} 
+0

попробовать 'новый файл («»). GetAbsolutePath()', чтобы увидеть полный путь и обновить путь к файлу на основе этого. – Andy

+1

Да, отсутствие файла с именем «c: //FileName.txt» на вашем iMac будет проблемой. Вам нужно узнать правильное имя файла. – Thilo

+2

Компилятор не может сказать вам, что файл не существует, потому что компилятор не запускает ваш код. Компилятор может сообщить вам, что у вас есть ошибки в коде, как у вас не закрывается '' c: // FileName.txt' String (вы забыли добавить '' 'после него. Также вы уверены, что на вашем пути должно быть '//' (я подозреваю, что вы можете использовать вместо этого '/' или '' \\ '')? – Pshemo

ответ

1

PrintWriter предназначено для вывода. Scanner может использоваться для ввода. И вы не закрываете ваш строковый литерал,

// "c:/FileName.txt" // <-- one slash and a quote at the end. 
File f = new File(System.getProperty("user.home"), "fileName.txt"); 

Для fileName.txt в вашей домашней папке.

Я думаю, что вы имели в виду, чтобы объявить i вне цикла, вы можете также использовать try-with-resources как

File f = new File(System.getProperty("user.home"), "fileName.txt"); 
try (Scanner stdln = new Scanner(f)) { 
    String[] line = new String[238]; 
    int i = 0; // <-- outside the loop. 
    while (stdln.hasNextLine()){ 
     line[i] = stdln.nextLine(); 
     i++; 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

Большое вам спасибо, я не уверен, что я сделал, но когда я использовал этот код File f = new File (System.getProperty («user.home»), «fileName.txt»); теперь он может найти файл. Огромное спасибо. – user320087

+0

@ user320087 «c: //FileName.txt» не является допустимым путем на Mac, и он будет действителен только в Windows, если в корне тома c есть файл с таким именем. Напротив, системное свойство user.home получает домашний каталог пользователя, и этот конструктор является ['File (родитель файла, дочерний элемент String)'] (https://docs.oracle.com/javase/7/docs/api/java /io/File.html#File%28java.io.File,%20java.lang.String%29). –

0

Сначала вам нужно найти реальный путь к вашему входному файлу. Например, если он находится в вашем домашнем каталоге, это может быть: «/Users/yourusername/FileName.txt»

Затем вам нужно исправить время цикла от этого:

while (stdln.hasNextLine()){ 
    int i = 0; 
    line[i] = stdln.nextLine(); 
    i++; 
} 

к этому:

int i = 0; 
while (stdln.hasNextLine()){ 
    line[i] = stdln.nextLine(); 
    i++; 
} 

Затем вам нужно распечатать массив строк.

+0

Спасибо за подсказку о петле тоже, я не видел эту ошибку. – user320087

 Смежные вопросы

  • Нет связанных вопросов^_^