2013-12-24 3 views
-2

У меня есть файл dictionary.txt, и мне нужно, чтобы получить файл из необработанной папки, так что я Googled вокруг и нашел это:Брус файла находка в необработанной папке андроид

Вот пример:

"android.resource:///"+getPackageName()+ "/" + R.raw.dictionary; 

но это не сработало, любая идея?

Edit:

здесь является то, что я делаю

   for(String line: FileUtils.readLines(file)) 
       { 

        if(line.toLowerCase().equals(b.toLowerCase())) 
        { 
         valid = true; 
        } 
       } 
+0

Пожалуйста отправьте соответствующий код. «Не работает» ничего нам не говорит. – Emmanuel

+0

Не удалось найти файл – Welsar55

ответ

3

Вы можете получить входной поток на сырьевой ресурс с помощью:

getResources().openRawResource(R.raw.dictionary); 

EDIT:

С ваше редактирование, действительно нет причин, по которым вам нужен конкретный файл, а не просто использовать t он вводит поток, доступный из метода openRawResource(int id) ... просто используйте существующий класс java http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#Scanner%28java.io.InputStream,%20java.lang.String%29.

Scanner scanner = new Scanner(getResources().openRawResource(R.raw.dictionary)); 

while(scanner.hasNextLine()){ 
{ 
    if(scanner.nextLine().toLowerCase().equals(b.toLowerCase())) 
        { 
         valid = true; 
        } 
       } 
} 
+0

Мне нужно, чтобы это был файл. – Welsar55

+0

Не могли бы вы объяснить, для чего/для чего вы его используете? – Submersed

+0

Я использую много вещей из apache commons io – Welsar55

2

К сожалению, вы не можете создать File объект непосредственно из папки raw. Вам необходимо скопировать его в sdcard или в кеш приложения.

Вы можете получить InputStream для файла таким образом

InputStream in = getResources().openRawResource(R.raw.yourfile); 

    try { 
     int count = 0; 
     byte[] bytes = new byte[32768]; 
     StringBuilder builder = new StringBuilder(); 
     while ((count = is.read(bytes,0 32768) > 0) { 
      builder.append(new String(bytes, 0, count); 
     } 

     is.close(); 
     reqEntity.addPart(new FormBodyPart("file", new StringBody(builder.toString()))); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

EDIT:

скопировать его на внутреннюю память:

File file = new File(this.getFilesDir() + File.separator + "fileName.ext"); 
try { 
     InputStream inputStream = resources.openRawResource(R.id._your_id); 
     FileOutputStream fileOutputStream = new FileOutputStream(file); 

     byte buf[]=new byte[1024]; 
     int len; 
     while((len=inputStream.read(buf))>0) { 
      fileOutputStream.write(buf,0,len); 
     } 

     fileOutputStream.close(); 
     inputStream.close(); 
    } catch (IOException e1) {} 

Теперь у вас есть File, что вы можете доступ в любом месте, где это необходимо.

+0

Прошу прощения, но я новичок в android и не знаю, как это могло бы помочь :( – Welsar55

+0

что вы хотите использовать его для? – gaurav5430

+0

Материал из apache commons io – Welsar55

1

Поместите файл в папку assets и открыть его, как этот

getResources().getAssets().open("dictionary.txt"); 
Смежные вопросы