2015-04-14 1 views
1

Я создаю программу для анализа текстового файла, я использую классы для этого с файлом запуска. Я пытаюсь получить результаты для печати в файл. Я создал файл с именем report.txt в той же папке, но ничего не печатает в файле. Я сделал это, используя полный путь к файлу, и он отлично работает, но я хочу сделать это только с именем файла, вместо этого он будет находиться в той же папке.Печать в файл с помощью PrintWriter в Java, не работающем с именем файла

Любая помощь будет высоко ценится, как получить результаты для печати в файл Report.txt

Мой код ниже:

Run Файл:

package cw; 

import java.io.File; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.Scanner; 
import java.io.IOException; 

public class TextAnalyser { 
    //Declaration of all Scanners to be used in other classes. 

    public static Scanner reader; 
    public static Scanner Linesc; 


    public static void main(String[] args) throws IOException { 
     //User enters a file to be scanned. 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter a filename"); 
     String filename = in.nextLine(); 
     File InputFile = new File(filename); 

     //Assign all scanners to scan users file. 
     Linesc = new Scanner(InputFile); 


     LineCounter Lineobject = new LineCounter(); 


     Lineobject.TotalLines(); 

    } 

} 

Class файл

package cw; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.Scanner; 
import java.io.IOException; 
public class LineCounter { 
    public static void TotalLines() throws IOException { 
         Scanner sc = TextAnalyser.Linesc; 
     PrintWriter out = new PrintWriter(new FileWriter("Report.txt", true)); 
     int linetotal = 0; 
     while (sc.hasNextLine()) { 
      sc.nextLine(); 
      linetotal++; 
     } 
     out.println("The total number of lines in the file = " + linetotal); 

      out.flush(); 
      out.close(); 
     System.out.println("The total number of lines in the file = " + linetotal); 
    } 
} 

ответ

0

Если он работает с полным файловым путем, но не только с именем файла, возможно, потому, что ваш текущий каталог, где файл написан, не так, как вы думаете. См. Getting the Current Working Directory in Java для определения текущего каталога.

0
Scanner sc = TextAnalyser.Linesc; 
PrintWriter out = new PrintWriter(new FileWriter(
     new File(LineCounter.class.getResource("Report.txt").toURI(), true)); 
int linetotal = 0; 
while (sc.hasNextLine()) { 
    sc.nextLine(); 
    linetotal++; 
} 

Замените часть вашего кода с вышеизложенным, это должно быть в состоянии найти report.txt файл по отношению к папке класса.