2011-06-09 11 views
11

अधिकतर जावा में एक फ़ाइल इनपुट एक निश्चित पथ का उल्लेख के लिए वेब पर वहाँ उदाहरण:उपयोगकर्ता इनपुट फ़ाइल कंसोल/कमांड लाइन - जावा

File file = new File("myfile.txt");

क्या कंसोल से उपयोगकर्ता इनपुट फ़ाइल के बारे में? मान लीजिए कि मैं उपयोगकर्ता एक फ़ाइल में प्रवेश करना चाहते हैं:

System.out.println("Enter a file to read: ");

क्या विकल्प मैं प्रसंस्करण के लिए एक उपयोगकर्ता निर्दिष्ट फ़ाइल में पढ़ने के लिए (यथासंभव कम कोड का उपयोग कर) किया है। एक बार मैं फ़ाइल है, मैं स्ट्रिंग, आदि के लिए परिवर्तित कर सकते हैं ... मैं सोच रहा हूँ यह BufferedReader, स्कैनर, FileInputStream, DataInputStream, आदि के साथ क्या करना है ... मैं तो बस कैसे संयोजन के रूप में उपयोग करने के लिए इन यकीन नहीं है सबसे कुशल विधि प्राप्त करें।

मैं अभी शुरुआत कर रहा हूँ, इसलिए मैं अच्छी तरह से कुछ आसान छूटे हुए हों। लेकिन मैं थोड़ी देर के लिए इसके साथ कोई गड़बड़ नहीं कर रहा हूं।

अग्रिम धन्यवाद।

उत्तर

18

कई संभावनाएं देखते हैं उपयोगकर्ता फ़ाइल का नाम दर्ज करवाने के लिए,।

public static void main(String[] args) { 
    if (0 < args.length) { 
    String filename = args[0]; 
    File file = new File(filename); 
    } 
} 

लिखने की उपयोगकर्ता पूछ द्वारा:

Scanner scanner = new Scanner(System.in); 
System.out.print("Enter a file name: "); 
System.out.flush(); 
String filename = scanner.nextLine(); 
File file = new File(filename); 
+0

मुझे नहीं लगता कि आप इस मामले में फ्लश करने के लिए की आवश्यकता है: http://stackoverflow.com/questions/7166328/when-why करने वाली कॉल-प्रणाली से बाहर फ्लश में जावा –

+0

@HunterS: अन्य सवाल में कुछ मामलों में 'flush' आवश्यक नहीं है कहा गया है कि। उपर्युक्त कोड उनमें से एक नहीं है, इसलिए मैंने फैसला किया कि इसके बारे में स्पष्ट होना बेहतर होगा। [प्रिंटस्ट्रीम] के अनुसार (http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#write (int)) जवाडोक इस मामले में आवश्यक है, क्योंकि स्ट्रिंग करता है एक \ n' चरित्र नहीं है। –

1

एक java.io.BufferedReader

String readLine = ""; 
try { 
     BufferedReader br = new BufferedReader(new FileReader(<the filename>)); 
     while ((readLine = br.readLine()) != null) { 
     System.out.println(readLine); 
     } // end while 
    } // end try 
    catch (IOException e) { 
     System.err.println("Error Happened: " + e); 
    } 

और भरने के अपने डाटा प्रोसेसिंग के साथ, जबकि पाश का प्रयोग करें।

एक कमांड लाइन तर्क के रूप में:

सादर, स्टीफन

संबंधित मुद्दे