2016-06-15 2 views
0

Так что я просто не уверен, как использовать этот метод. У меня есть программа, которая печатает счетчик для Word, символ и строку, но я также хотел бы, чтобы он сказал имя файла, прежде чем он выплевывает эту информацию. Я просмотрел информацию об этом, но я не уверен, как это реализовать с моей программой.Использование .getName для печати имени файла

package practicefiles; 

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

public class PracticeFiles { 

    public static void main(String[] args) throws Exception { 
     int charCount = 0; 
     int wordCount = 0; 
     int lineCount = 0; 
     String count; 
     StringTokenizer st; 
     BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter file: "); 
     count = buf.readLine(); 
     buf = new BufferedReader(new FileReader(count)); 
     while ((count = buf.readLine()) != null) { 
      lineCount++; 
      st = new StringTokenizer(count, " ,;:."); 
      while (st.hasMoreTokens()) { 
       wordCount++; 
       count = st.nextToken(); 
       charCount += count.length(); 
      } 
     } 
     // String fileName = count.getName(); 
     System.out.println("Character Count : " + charCount); 
     System.out.println("Word Count : " + wordCount); 
     System.out.println("Line Count : " + lineCount); 
     buf.close(); 
    } 
} 

So Summary: Запросить файл, файл входных данных пользователя, распечатать символ, количество слов и строк. Перед тем, как распечатать имя файла.

ответ

0

Простым способом было бы создать строку из вашей строки buf.readLine(), а затем создать новый файл, который вы передадите в FileReader, используя вашу строку из ранее. Затем вы можете ссылаться на файл позже, используя getName();

public class PracticeFiles { 

public static void main(String[] args) throws Exception{ 
int charCount=0; 
int wordCount=0; 
int lineCount=0; 
String count; 
StringTokenizer st; 
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in)); 
    System.out.print("Enter file: "); 
    String fileName = buf.readLine(); 
    File file = new File(fileName); 
    buf=new BufferedReader(new FileReader(file)); 
    while((count=buf.readLine())!=null) 
     { 
      lineCount++; 
      st=new StringTokenizer(count," ,;:."); 
      while(st.hasMoreTokens()) 
       { 
        wordCount++; 
        count=st.nextToken(); 
        charCount+=count.length(); 
       } 
     } 
     System.out.println("The file name is: " + file.getName()); 
     System.out.println("Character Count : " + charCount); 
     System.out.println("Word Count : " + wordCount); 
     System.out.println("Line Count : " + lineCount); 
     buf.close(); 
    } 
} 
2

Вы не можете использовать count.getName(); потому что граф является String не File.

Когда вы делаете свой BufferedReader, вы поставляете его FileReader, а когда вы делаете это FileReader, вы даете ему путь к открываемому файлу.

Если вы хотите позже обратиться к этому вопросу, то вам необходимо создать переменную, которая хранит его.

File inputFile = new File(count);

тогда, когда вы делаете ваш BufferedReader вы можете использовать будет использовать
buf=new BufferedReader(new FileReader(inputFile));

и когда вы хотите, чтобы получить имя из File вы будете использовать inputFile.getName();

+0

Никто не должен использовать java.io.File больше. [Paths.get] (HTTP: //docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html#get-java.lang.String-java.lang.String ... -) и [Files.newBufferedReader] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#newBufferedReader-java.nio.file.Path-java.nio .charset.Charset-). – VGR

+0

Спасибо! Я не знал об этом изменении. – dustinroepsch

-1

Попробуйте

package practicefiles; 

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

public class PracticeFiles { 

    public static void main(String[] args) throws Exception { 
     int charCount = 0; 
     int wordCount = 0; 
     int lineCount = 0; 
     File file; 
     String count; 
     StringTokenizer st; 
     BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter file: "); 
     file = new File(buf.readLine()); // <-- this is new 
     System.out.println("Use "+file.getAbsolutePath()); 
     buf = new BufferedReader(new FileReader(file)); 
     while ((count = buf.readLine()) != null) { 
      lineCount++; 
      st = new StringTokenizer(count, " ,;:."); 
      while (st.hasMoreTokens()) { 
       wordCount++; 
       count = st.nextToken(); 
       charCount += count.length(); 
      } 
     } 
     // String fileName = count.getName(); 
     System.out.println("Character Count : " + charCount); 
     System.out.println("Word Count : " + wordCount); 
     System.out.println("Line Count : " + lineCount); 
     buf.close(); 
    } 
} 
+0

Большой блок кода без объяснения того, что вы изменили, или почему, не является особенно полезным ответом. – VGR

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