2014-09-25 1 views
0

Я пытаюсь прочитать ввод (с клавиатуры, а также с перенаправлением файла командной строки), обрабатывать входную информацию. и вывести его в файл. Я понимаю, что с использованием следующего кода и использования командной строки: java programName<input.txt>output.txt мы должны иметь возможность распечатать вывод в файл. Но это не сработает. Может кто-нибудь, пожалуйста, поможет указать правильный способ сделать это? Большое спасибо!java use sanner для ввода/вывода и перенаправления файлов

public static void main(String[] args) { 

    Scanner sc = new Scanner (System.in); 

    int [] array= new int[100]; 
    while (sc.hasNextLine()){ 
     String line = sc.nextLine(); 

     .....//do something 

    } 
+0

где вы получаете проблему? – InvincibleWolf

+0

ничего не было распечатано на консоль или в выходной файл – stillAFanOfTheSimpsons

ответ

1

Попробуйте приведенный ниже код

import java.io.*; 
import java.util.*; 
/** 
* 
* @author Selva 
*/ 
public class Readfile { 
    public static void main(String[] args) throws FileNotFoundException, IOException{ 
    if (args.length==0) 
    { 
    System.out.println("Error: Bad command or filename."); 
    System.exit(0); 
    }else { 
     InputStream in = new FileInputStream(new File(args[0])); 
     OutputStream out = new FileOutputStream(new File(args[1])); 
     byte[] buf = new byte[1024]; 
     int len; 
     while ((len = in.read(buf)) > 0) { 
     out.write(buf, 0, len); 
     } 
     in.close(); 
     out.close(); 
    } 
    } 
} 

Выполнить этот код, используя Если ваш текстовый файл и Java-код той же папке запустить программу, как показано ниже.

ява ReadFile input.txt output.txt

Если ваш текстовый файл и Java-код другая папки запустить программу, как показано ниже.

java Readfile c:\input.txt c:\output.txt 

Если вы читаете форму ввода клавиатуры, используя scanner.Try ниже код

import java.io.*; 
import java.util.*; 
    /** 
    * 
    * @author Selva 
    */ 
    public class Readfile { 
     public static void main(String[] args) throws FileNotFoundException, IOException{ 
     Scanner s=new Scanner(System.in); 
     if (args.length==0) 
     { 
     System.out.println("Error: Bad command or filename."); 
     System.exit(0); 
     }else { 
      System.out.println("Enter Input FileName"); 
      String a=s.nextLine(); 
      System.out.println("Enter Output FileName"); 
      String b=s.nextLine(); 
      InputStream in = new FileInputStream(new File(a)); 
      OutputStream out = new FileOutputStream(new File(b)); 
      byte[] buf = new byte[1024]; 
      int len; 
      while ((len = in.read(buf)) > 0) { 
      out.write(buf, 0, len); 
      } 
      in.close(); 
      out.close(); 
     } 
     } 
    } 
+0

Спасибо за информацию. Это очень полезно. Однако есть ли способ избежать использования FileInputStream? Я полагаю, что с входным потоком он может принимать файлы только в качестве входных данных, но не вводить с клавиатуры? – stillAFanOfTheSimpsons

+0

см. Мой ответ, чтобы прочитать имя файла с клавиатуры. Он работает так, как вы ожидали – Madhesh