2015-10-28 43 views
0

從文件和打印文本,我認爲我的代碼正在讀取文件的權利,但是當我運行應用程序,輸出的「Hello World」。這告訴我文本字段沒有被覆蓋。我認爲問題在於while循環。這是我的Java代碼:應用來閱讀文本字段

package com.example.fileio.app1_fileio; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.List; 
import java.util.Scanner; 
import java.io.FileReader; 


public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    BufferedReader br = null; 

    try { 

     String sCurrentLine; 

     //get a reference to the textview in the view, this is done by referring to the textview's id: outputText 
     TextView t = (TextView) findViewById(R.id.textField); 


     String var1; 
     String var2; 

     br = new BufferedReader(new FileReader("C:\\Users\\android.txt")); 

     while ((sCurrentLine = br.readLine()) != null) { 
      var1 = sCurrentLine; 
      var2 = sCurrentLine; 
      //overwrite the text in the textview 
      t.setText(var1); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (br != null)br.close(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 


    //create a new file using the utility class: "FileUtility" 
    FileUtility myFile = new FileUtility(); 

    Log.i("Info", "Android File Example Main Activity Completed"); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

<TextView android:text="@string/hello_world" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textField" /> 

+0

你應該嘗試調試它...雖然我敢確認您的Android設備不具有C:\驅動器... – Buddy

+0

同意@Buddy沒有辦法該文件存在於設備上。另一個問題是你正在以一個while循環正在讀取文件的速度更新文本字段。你永遠不會看到文字更新。更可能的是,當您正確地閱讀文件時,您只會看到文件的最後一行。 –

+0

雖然我在模擬器上運行它。 – pro

回答

1

如果你想在一個文本文件閱讀,然後更新與文本文件的內容一個TextView ,你可以試試這個。

首先,在您的res文件夾的「原始」文件夾中的文本文件添加到您的項目。如果您沒有原始文件夾,可以通過右鍵單擊res文件夾並選擇New-> Android資源目錄來添加一個。然後在下一個對話框中,從「資源類型」下拉列表中選擇「原始」。將新目錄命名爲「原始」,單擊確定以創建它。

一旦您的原始文件夾中創建,只需將您的文本文件到這個文件夾。

現在你的文本文件是項目的一部分,你可以閱讀和更新與上下文一個TextView做這樣的事情:

StringBuilder stringBuilder = new StringBuilder(); 
InputStream inputStream = getResources().openRawResource(R.raw.your_text_file); 
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
String line; 

try { 
    while ((line = bufferedReader.readLine()) != null) { 
     stringBuilder.append(line).append("\n"); 
    } 

    bufferedReader.close(); 

} catch (IOException ioe) { 
    ioe.printStackTrace(); 
} 

TextView textView = (TextView) findViewById(R.id.your_text_view); 
textView.setText(stringBuilder.toString()); 
+0

謝謝!完美的作品! – pro

+0

太棒了!樂意效勞! – NoChinDeluxe