Mogę umieścić plik tekstowy w folderze res \ raw projektu bibliotecznego, ale jego odczytanie wymaga odwołania do kontekstu. Czy ktokolwiek mógłby rzucić trochę światła na to?Czy można odczytać nieprzetworzony plik tekstowy bez odniesienia kontekstowego w projekcie biblioteki Androida?
Odpowiedz
Sprawdź moje odpowiedzi here, aby zobaczyć, jak odczytać plik z POJO.
Zazwyczaj folder res powinien być automatycznie dodany do ścieżki budowania projektu przez wtyczkę ADT. załóżmy, że masz Test.txt zapisany pod RES/folderu surowego, aby ją przeczytać bez android.content.Context:
String file = "raw/test.txt"; // res/raw/test.txt also work.
InputStream in = this.getClass().getClassLoader().getResourceAsStream(file);
zrobiłem tego wcześniej ze starej wersji SDK, to powinno działać z najnowszym SDK, jak również. Spróbuj i sprawdź, czy to pomaga.
Aby uzyskać dostęp do zasobu, potrzebny jest kontekst. Zobacz tutaj definicję klasy Context.class z witryny developer.android:
Interfejs do globalnych informacji o środowisku aplikacji. Ta jest klasą abstrakcyjną, której implementację zapewnia system Android . Umożliwia on dostęp do zasobów specyficznych dla aplikacji i klas, jak również aktualne zaproszenia do operacji na poziomie aplikacji, takich jak działalności Rozpoczynając, nadawanie i odbieranie zamiarów itp
Więc poprzez kontekście można uzyskać dostęp plik zasobów. Możesz utworzyć kolejną klasę i przekazać kontekst z działania do niej. Utwórz metodę odczytującą określony plik zasobów.
Na przykład:
public class ReadRawFile {
//Private Variable
private Context mContext;
/**
*
* Default Constructor
*
* @param context activity's context
*/
public ReadRawFile(Context context){
this.mContext = context;
}
/**
*
* @param str input stream used from readRawResource function
* @param x integer used for reading input stream
* @param bo output stream
*/
private void writeBuffer(InputStream str, int x, ByteArrayOutputStream bo){
//not hitting end
while(x!=-1){
//write to output buffer
bo.write(x);
try {
//read next
x = str.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @return output file to string
*/
public String readRawResource(){
//declare variables
InputStream rawUniversities = mContext.getResources().openRawResource(R.raw.universities);
ByteArrayOutputStream bt = new ByteArrayOutputStream();
int universityInteger;
try{
//read/write
universityInteger = rawUniversities.read();
writeBuffer(rawUniversities, universityInteger, bt);
}catch(IOException e){
e.printStackTrace();
}
//return string format of file
return bt.toString();
}
}
- 1. Jak odczytać plik tekstowy w projekcie PCL Xamarin Forms?
- 2. Plik tekstowy dołączania Androida:
- 3. Golang: Jak odczytać plik tekstowy?
- 4. Jak odczytać rosnący plik tekstowy w C++?
- 5. Jak odczytać plik tekstowy w JavaScript
- 6. Jak odczytać duży plik tekstowy w Pythonie?
- 7. jak odczytać plik tekstowy w ios
- 8. Jak odczytać plik tekstowy z usługi Windows?
- 9. J2ME/Blackberry - jak odczytać/napisać plik tekstowy?
- 10. Jak odczytać plik tekstowy formatu o stałej szerokości w pandach?
- 11. Czytaj zdalny plik tekstowy w Androidzie
- 12. Czy można odczytać plik podczas kompilacji?
- 13. Czy można odczytać plik data.table z PostgreSQL?
- 14. Jak odczytać i nadpisać plik tekstowy w C?
- 15. odczytać plik tekstowy i wyszukać ciąg w Androidzie
- 16. Jak odczytać wybrany plik tekstowy z sdcard na Androidzie
- 17. Usunąć nieużywane odniesienia (! = Usings) w projekcie C# bez Resharper?
- 18. odczytać plik tekstowy z System do Hbase MapReduce
- 19. odczytać plik tekstowy o zmiennej liczbie kolumn do listy
- 20. Czy można uzyskać nieprzetworzony ciąg param w szynach?
- 21. zasoby w projekcie biblioteki klas
- 22. Jak odczytać plik tekstowy na GNU R z separatorem wielobajtowym?
- 23. Czytaj stałej szerokości plik tekstowy
- 24. Jak odczytać plik .xlsx przy użyciu biblioteki pandy w iPythonie?
- 25. Jak poprawnie odczytać/zinterpretować nieprzetworzony ślad stosu C#?
- 26. Odpowiednik LocalBroadcastManager bez biblioteki pomocy Androida
- 27. Jak odczytać plik ze ścieżki względnej w projekcie Java? java.io.File nie może odnaleźć określonej ścieżki
- 28. Przeczytaj lokalny plik tekstowy za pomocą Javascriptu
- 29. Jak czytać plik tekstowy w systemie Android?
- 30. Odczytaj plik tekstowy z PCLStorage w Xamarin.Forms
Dzięki za cynk. Właśnie próbowałem. Eclipse nie lubi umieszczania pliku w res, więc pozostawiłem plik w res \ raw. Otrzymuję pustą wartość, gdy próbuję uzyskać dostęp do pliku przez this.getClass(). GetClassLoader(). GetResourceAsStream ("text.txt") lub this.getClass(). GetClassLoader(). GetResourceAsStream ("raw \ text.txt") – Hong
@Hong, próbowałem na moim Macu z SDK r16 i teraz mogę potwierdzić, że działa zarówno "res/raw/test.txt" i "raw/test.txt". natomiast "test.txt" wyrzuca NPE. Zauważ, że potrzebujesz ukośnika (/), a nie ukośnika (\\). – yorkw
Tak! To działa! Działa również w statycznym konstruktorze, więc takiego odczytu nie trzeba wykonywać za każdym razem, gdy wywoływana jest metoda. Wielkie dzięki. – Hong