2016-06-15 9 views
0

このメソッドを使用する方法は不明です。私は単語、文字、行の数を表示するプログラムを持っていますが、この情報を吐き出す前にファイル名を言うことも欲しいと思います。私はこれについての情報を見てきましたが、私はこれを私のプログラムでどのように実装するのか分かりません。.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(); 
    } 
} 

要約:ファイル、ユーザー入力ファイルを要求し、char、word、行数を出力します。これの前にfilenameを表示したいでしょうか?

答えて

0

簡単な方法は、buf.readLine()行から文字列を作成し、以前の文字列を使用してFileReaderに渡す新しいファイルを作成することです。後でgetName()を使用してファイルを参照できます。カウントがStringないFileあるので

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();を使用することはできません。

はあなたが作るとき、あなたのBufferedReaderは、あなたはそれをFileReaderを供給し、そしてあなたはそれをあなたが開いているファイルへのパスを与えているFileReaderことを作っているとき。

これを参照する場合は、Fileを保存する変数を作成する必要があります。

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

関連する問題