2013-04-11 2 views
1

Im пытается прочитать текстовый файл под названием test.txt со сканером класса. В txt-файле это просто предложение вроде: «Это txt-файл». Это предложение - это то, что я пытаюсь получить. Но все, что я выписал, - это имя txt-файла, когда я использую команду: java UDPClient test.txt localhost.Использование класса сканера для чтения файла

Может кто-нибудь увидеть что-то не так в коде, чтобы я мог исправить это? У меня есть два возможных кода.

Import java.net.*; 
Import java.io.*; 
Import java.util.*; 

public class Test_scanner { 

    public String readFile(String fileName) throws IOException { 

     File file = new File("test.txt"); 
     StringBuilder fileContents = new StringBuilder((int)file.length()); 
     Scanner s = new Scanner(file); 
     String lineSeparator = System.getProperty("line.separator"); 

    try { 
     while (s.hasNextLine()) { 
      fileContents.append(s.nextLine() + lineSeparator); 
     } 
      return fileContents.toString(); 
     } finally { 
      s.close(); 
      } 
    } 
} 

У меня есть этот код:

import java.net.*; 
import java.io.*; 
import java.util.*; 

public class Test_scanner { 

    public static void readFile(String fileName) { 
     try { 
      File file = new File(fileName); 
      Scanner scanner = new Scanner(file); 
      while (scanner.hasNextLine()) { 
        System.out.println(scanner.nextLine()); 
      } 
        scanner.close(); 
      } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
      } 
    } 
+0

Ваш второй блок кода отлично подходит для меня, его определенно печатает содержимое файла, а не имя файла. Однако я бы переместил 'scanner.close()' в блок finally. – Quetzalcoatl

ответ

0

«Импорт» в ваших операторов импорта не должны быть капитализированы, чтобы ваш второй блок кода имеет это правильно. Я не вижу метода main() в обоих кодах; вам нужен метод main() для запуска вашей программы. Предполагая, что вы используете командную строку для ввода имени файла, вы можете использовать что-то вроде этого:

import.java.io.*; 
import.java.util.*; 

public class TestScanner{ 

    public static void main(String[] args) { 
     String sFileName = ""; 
     //checks if user enters a file name 
     if(args.length == 0) { 
     System.out.println("Please enter a file name in command line."); 
     //terminates program 
     System.exit(0); 
     } 
     else { 
     sFileName = args[0]; 
     } 

     File myFile = new File(sFileName); 
     //scanner object which reads from file 
     Scanner fileReader = null; 

     try { 
     //links scanner object to file. 
     fileReader = new Scanner(myFile); 
     } 
     catch (FileNotFoundException fnf) { 
     System.out.println("ERROR: File not found for " + sFileName); 
     //terminates program 
     System.exit(1); 
     } 

     System.out.println("Reading from file: " + sFileName + "\n"); 

     //fileReader reads each line from file. 
     while(fileReader.hasNextLine()) { 
     //stores each line from file trimmed 
     System.out.println(fileReader.nextLine()); 
     } 
    }//end main() method 
}//end TestScanner class 
Смежные вопросы