Android에서 텍스트 파일을 어떻게 읽을 수 있습니까?


116

텍스트 파일에서 텍스트를 읽고 싶습니다. 아래 코드에서 예외가 발생합니다 (즉, catch블록으로 이동 함). 응용 프로그램 폴더에 텍스트 파일을 넣었습니다. 올바르게 읽으려면이 텍스트 파일 (mani.txt)을 어디에 넣어야합니까?

    try
    {
        InputStream instream = openFileInput("E:\\test\\src\\com\\test\\mani.txt"); 
        if (instream != null)
        {
            InputStreamReader inputreader = new InputStreamReader(instream); 
            BufferedReader buffreader = new BufferedReader(inputreader); 
            String line,line1 = "";
            try
            {
                while ((line = buffreader.readLine()) != null)
                    line1+=line;
            }catch (Exception e) 
            {
                e.printStackTrace();
            }
         }
    }
    catch (Exception e) 
    {
        String error="";
        error=e.getMessage();
    }

4
에뮬레이터가 S / M의 일부가되기를 바라십니까? "E : \\ test \\ src \\ com \\ test \\ mani.txt"
Athul 하리 쿠마

2
텍스트 파일을 읽으려는 위치 ...?
Sandip Armal Patil

2
InputStream iS = resources.getAssets (). open (fileName); (파일을 자산에 넣는 경우)
Athul Harikumar

1
@Sandip 실제로 텍스트 파일 (mani.txt)을 복사하여 Android 응용 프로그램의 폴더 (.settings, bin, libs, src, assets, gen, res, androidmanifeast.xml이있는 폴더)에 넣습니다.
user1635224

2
또는 단순히 res / raw 폴더에 넣고 업데이트 된 답변을 확인하십시오.
Sandip Armal Patil

답변:


242

이 시도 :

텍스트 파일이 SD 카드에 있다고 가정합니다.

    //Find the directory for the SD Card using the API
//*Don't* hardcode "/sdcard"
File sdcard = Environment.getExternalStorageDirectory();

//Get the text file
File file = new File(sdcard,"file.txt");

//Read text from file
StringBuilder text = new StringBuilder();

try {
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;

    while ((line = br.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
    br.close();
}
catch (IOException e) {
    //You'll need to add proper error handling here
}

//Find the view by its id
TextView tv = (TextView)findViewById(R.id.text_view);

//Set the text
tv.setText(text.toString());

다음 링크도 도움이 될 수 있습니다.

Android에서 SD 카드의 텍스트 파일을 어떻게 읽을 수 있습니까?

Android에서 텍스트 파일을 읽는 방법은 무엇입니까?

Android 읽기 텍스트 원시 리소스 파일


3
것입니다 귀하의 링크를 달성하기 위해 나에게 도움이
user1635224

10
BufferedReader는 마지막에 닫아야합니다!
RainClick

2
txt 문서에 빈 행이 하나 있으면이 파서가 작동을 멈 춥니 다! 이 솔루션은이 빈 행을 가지고 인정하는 것입니다 : while ((line = br.readLine()) != null) { if(line.length() > 0) { //do your stuff } }
Choletski

SD 카드에 파일을 추가하는 방법을 @Shruti
Tharindu Dhanushka에게

@Choletski, 왜 작동을 멈출 것이라고 말합니까? 빈 줄이 있으면 빈 줄이 StringBuilder 텍스트에 추가됩니다. 뭐가 문제 야?
LarsH

28

SD 카드에서 파일을 읽으려면. 그러면 다음 코드가 도움이 될 수 있습니다.

 StringBuilder text = new StringBuilder();
    try {
    File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard,"testFile.txt");

        BufferedReader br = new BufferedReader(new FileReader(file));  
        String line;   
        while ((line = br.readLine()) != null) {
                    text.append(line);
                    Log.i("Test", "text : "+text+" : end");
                    text.append('\n');
                    } }
    catch (IOException e) {
        e.printStackTrace();                    

    }
    finally{
            br.close();
    }       
    TextView tv = (TextView)findViewById(R.id.amount);  

    tv.setText(text.toString()); ////Set the text to text view.
  }

    }

자산 폴더에서 파일을 읽으려면

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

또는 res/rawfoldery 에서이 파일을 읽으 려면 파일이 색인화되고 R 파일의 ID로 액세스 할 수 있습니다.

InputStream is = getResources().openRawResource(R.raw.test);     

res / raw 폴더에서 텍스트 파일을 읽는 좋은 예


2
brfinally 블록에서 범위를 벗어납니다.
AlgoRythm


3

먼저 원시 폴더에 텍스트 파일을 저장합니다.

private void loadWords() throws IOException {
    Log.d(TAG, "Loading words...");
    final Resources resources = mHelperContext.getResources();
    InputStream inputStream = resources.openRawResource(R.raw.definitions);
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

    try {
        String line;
        while ((line = reader.readLine()) != null) {
            String[] strings = TextUtils.split(line, "-");
            if (strings.length < 2)
                continue;
            long id = addWord(strings[0].trim(), strings[1].trim());
            if (id < 0) {
                Log.e(TAG, "unable to add word: " + strings[0].trim());
            }
        }
    } finally {
        reader.close();
    }
    Log.d(TAG, "DONE loading words.");
}

2

이 코드 시도

public static String pathRoot = "/sdcard/system/temp/";
public static String readFromFile(Context contect, String nameFile) {
    String aBuffer = "";
    try {
        File myFile = new File(pathRoot + nameFile);
        FileInputStream fIn = new FileInputStream(myFile);
        BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
        String aDataRow = "";
        while ((aDataRow = myReader.readLine()) != null) {
            aBuffer += aDataRow;
        }
        myReader.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return aBuffer;
}

0

이 시도

try {
        reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
      String line="";
      String s ="";
   try 
   {
       line = reader.readLine();
   } 
   catch (IOException e) 
   {
       e.printStackTrace();
   }
      while (line != null) 
      {
       s = s + line;
       s =s+"\n";
       try 
       {
           line = reader.readLine();
       } 
       catch (IOException e) 
       {
           e.printStackTrace();
       }
    }
    tv.setText(""+s);
  }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.