Как открыть файл в папке ресурсов, используя путь, хранящийся в базе данных? - PullRequest
1 голос
/ 10 декабря 2011

В моей базе данных хранится путь к файлу text1.txt, в котором содержится текст, который я хочу отобразить. Файл находится в папке активов, assets / text1.txt.

Как открыть этот файл и отобразить его содержимое?

Код:

if (placetext != null) {
    try 
    {
        InputStream textpath = getAssets().open(text);
        //Bitmap bit = BitmapFactory.decodeStream(textpath);
        placetext.setText(text);
        //placetext.setText(text);
    } 
    catch (IOException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

... и представление на эмуляторе - это просто text1.txt, а не содержимое файла.

У меня уже есть решение

String text12 = b.getString ("тексты") пытаться { InputStream is = getAssets (). Open (text12); // int size = is.available ();

           byte[] buffer = new byte[size];
           is.read(buffer);
           is.close();

           String text= new String(buffer);

           placetext = (TextView)findViewById(R.id.detailText2);
           placetext.setText(text);
          } catch (IOException e) {
              throw new RuntimeException(e);
          }

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Это то, что я использую для чтения содержимого XML-файла, хранящегося в папке / assets:

 public static String getXMLFromAssets(Context ctx, String pathToXML){   
        InputStream rawInput;
        //create a output stream to write the buffer into  
        ByteArrayOutputStream rawOutput = null;
        try {
            rawInput = ctx.getAssets().open(pathToXML);
            //create a buffer that has the same size as the InputStream  
            byte[] buffer = new byte[rawInput.available()];  
            //read the text file as a stream, into the buffer  
            rawInput.read(buffer);  
            rawOutput = new ByteArrayOutputStream();  
            //write this buffer to the output stream  
            rawOutput.write(buffer);  
            //Close the Input and Output streams  
            rawOutput.close();  
            rawInput.close();
        } catch (IOException e) {
            Log.e("Error", e.toString());
        }
        //return the output stream as a String  
        return rawOutput.toString();  
}
0 голосов
/ 10 декабря 2011

Это нормально, потому что:

InputStream textpath = getAssets().open(text);

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

placetext.setText(text); 

Это помещает текст, переданный в параметре в текстовое поле,поэтому прямо сейчас имя вашего файла.

Чтобы поместить содержимое вашего файла в текстовое поле, вы должны открыть файл, прочитать его и сохранить содержимое в StringBuffer, а после поместить содержимое StringBuffer вtextfield.

РЕДАКТИРОВАТЬ:

StringBuilder text = new StringBuilder();
Scanner scanner = new Scanner(new FileInputStream(new File('yourfile')));
    try {
      while (scanner.hasNextLine()){
      text.append(scanner.nextLine());
      }
    }
    finally{
        scanner.close();
    }

}

Одно из множества других решений для чтения содержимого файла в Java.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...