2017-05-04 66 views
-1
String text; 
try { 
    PrintStream pw2 = new PrintStream(new FileOutputStream("C:\\Users\\jadit\\Desktop\\ts.doc")); 
    InputStreamReader isr = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(isr); 
    text = br.readLine();   //Reading String 

    System.out.println(text); 
    pw2.print(text); 
    pw2.close(); 
    isr.close(); 
    br.close(); 
    } 
catch(Exception e) { 
    System.out.println(e); 
} 

int str; 

try {  
    FileInputStream fr2 = new FileInputStream("C:\\Users\\jadit\\Desktop\\ts.doc"); 
    BufferedInputStream br2 = new BufferedInputStream(fr2); 
    PrintStream pw1 = new PrintStream(System.out, true); 

    while ((str=br2.read()) >= 0) 
     pw1.println(" "+str); 

    fr2.close(); 
    pw1.close(); 
    br2.close(); 
} 
catch(Exception e){} 

輸出:差異在Java輸入輸出

run: 
a b c d 
a b c d 
    97 
    32 
    98 
    32 
    99 
    32 
    100 
    32 

如果我想讀一些其他文件的內容說,t.txt在第二個try塊那麼它不執行或讀取文件t.txt的內容,但是當我正在讀取正在第一個嘗試塊中寫入的同一文件的內容時,它將在輸出中顯示如上所示的內容。所以即使流在第一次嘗試塊本身被關閉,並在下一個嘗試塊中被打開,爲什麼會發生?我們不能在同一個程序中的不同文件上工作嗎?

+1

您的問題對我來說並不清楚,而且我也無法將輸出與您的實際Java代碼關聯起來。 –

+1

要添加@TimBiegeleisen,我也不是很瞭解你想要什麼,但是'閱讀內容',內容是什麼?你正在讀它們作爲'int',並且正在這裏做一個空的捕獲。也許你會遇到一個你從未注意到的'Exception',因爲你的異常處理不會做任何事情? (我很肯定你是這樣做的) – SomeJavaGuy

+0

@TimBiegeleisen - 實際上,我在netbeans上運行這個代碼,這是我得到的輸出。實際上,我有這個問題,我應該使用標準輸入在文件'a'中寫入一些內容,並打印另一個已經創建的文件'b'的內容。現在問題的第一部分是正常的,但在第二部分中,如果我正在嘗試讀取文件'b'的內容,那是不會發生的,而相反,如果正在讀取正在打印/執行的文件'a的內容。所以我卡住了。 –

回答

0

如果我你的要求的理解是正確的,你是

  1. 試圖從標準輸入讀取內容並將其寫入到文件。
  2. 嘗試從文件讀取內容並將其寫入標準輸出。

從標準輸入中讀取內容並將其寫入文件可行,但您無法從文件讀取內容並將其寫入標準輸出。

以下代碼將幫助您實現第二部分。

try 
    { 
     FileReader fr = new FileReader("C:\\Users\\jadit\\Desktop\\ts.doc"); 
     BufferedReader br = new BufferedReader(fr); 

     String str = null; 
     while ((str = br.readLine()) != null) 
     { 
      System.out.println(str); 
     } 

     fr.close(); 
     br.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
+0

@ anthoon-非常感謝你。 :)它的工作原理非常好:) –

+0

@GARIMAJAIN很高興能幫到你。請閱讀https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/和https://www.mkyong.com/java/how-to-write-to -file-in-java-bufferedwriter-example /以更好地理解事物。 – anthoon

0

嗯,你的第二個try catch塊被打印,因爲您打印「STR」在文件中的文本的ASCII值而不將其轉換爲字符

你所要做的就是更換pw1.println( 「」+ str);與此:

char c =(char)str;

pw1.println(「」+ c);

它會給你文件的內容,而不是它們的ascii值。