2013-12-02 6 views
0

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

public class FileConverter 
{ 

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


    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter the filename for the first file"); 
    String filename = keyboard.nextLine(); 

    File file = new File(filename); 
    Scanner inputFile = new Scanner (file); 

    while(inputFile.hasNext()) 
    { 
     String fileinfo = inputFile.nextLine(); 
     String uppercaseinfo1 = fileinfo.toUpperCase(); 
    } 

    System.out.print("Enter the filename " 
       + "for the second file"); 
    filename = keyboard.nextLine(); 
    PrintWriter outputFile = new PrintWriter(file); 

    while(inputFile.hasNext()) 
     { 
      outputFile.println(); 
     } 
} 
} 

ответ

0

Вы должны close() в PrintWriter

... 
while(inputFile.hasNext()) 
{ 
    outputFile.println(); 
} 

ouputFile.close(); 

Кроме того, Вам не нужно две петли. Просто переведите все в один цикл. Вы должны убедиться, что у вас есть два разных объекта File. Один для входа и один для выхода. С разными именами файлов.

Scanner keyboard = new Scanner(System.in); 

System.out.println("Enter the filename for the first file"); 
String filename = keyboard.nextLine(); 
File file = new File(filename);     // file 1 
Scanner inputFile = new Scanner (file);   // infile 

System.out.print("Enter the filename " 
     + "for the second file"); 
filename = keyboard.nextLine(); 
File file1 = new File(filename);     // file 2 
PrintWriter outputFile = new PrintWriter(file1); // outfile 

while(inputFile.hasNext()) 
{ 
    String fileinfo = inputFile.nextLine(); 
    String uppercaseinfo1 = fileinfo.toUpperCase(); 
    outputFile.println(uppercaeinfo1); 
} 

outputFile.close(); 
+0

опечатка: uppercaeinfo1 :) – naXa

+0

И это не будет работать, если входные и выходные файлы одно и то же. – naXa

0

Вам нужен FileWriter там, и закрыть его:

FileWriter outFile = new FileWriter(filePath); 
PrintWriter out = new PrintWriter(outFile); 

out.println("stuff"); 

out.close(); 
0

Не только close() метод отсутствует. Решение имеет некоторые ошибки.

// corrected statements are marked with "!" 
public static void main(String[] args) throws IOException 
{ 


    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter the filename for the first file"); 
    String filename = keyboard.nextLine(); 

    File file = new File(filename); 
    Scanner inputFile = new Scanner(file); 

    String uppercaseinfo1 = "";        // ! 
    while(inputFile.hasNext()) 
    { 
     String fileinfo = inputFile.nextLine(); 
     uppercaseinfo1 += fileinfo.toUpperCase() + "\n";  // ! 
    } 
    inputFile.close();   // ! 

    System.out.print("Enter the filename " 
      + "for the second file"); 
    filename = keyboard.nextLine(); 
    file = new File(filename);     // ! 
    PrintWriter outputFile = new PrintWriter(file); 
    outputFile.println(uppercaseinfo1);   // ! 
    outputFile.close();       // ! 
} 

И, как справедливо отмечалось выше, необходимо закрыть входные/выходные потоки в конце концов, если вы хотите, чтобы изменения вступили в силу.

0

Используйте экземпляр BufferedWriter для записи в файл вместо PrintWriter.

например.

BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); // create the write buffer 

// to-do: EITHER surround with try-catch in order catch the IO Exception OR add throws declaration 

bw.write("some text"); // content for the new line 
bw.newLine(); // a line break 

bw.flush(); // flush the buffer and write into the file 
0
public static void main(String[] args) throws IOException 
    { 


Scanner keyboard = new Scanner(System.in); 

System.out.println("Enter the filename for the first file"); 
String filename = keyboard.nextLine(); 

File file = new File(filename); 
Scanner inputFile = new Scanner (file); 
System.out.print("Enter the filename " 
      + "for the second file"); 
String filename2 = keyboard.nextLine(); 
File file2 = new File(filename2); 
PrintWriter outputFile = new PrintWriter(file2); 

while(inputFile.hasNext()) 
{ 
    String fileinfo = inputFile.nextLine(); 
    String uppercaseinfo1 = fileinfo.toUpperCase(); 
    outputFile.println(uppercaseinfo1); 
} 
outputFile.close() 
} 
} 

Я делаю это, как этот-л

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