SORU
3 Mart 2012, CUMARTESİ


okuma varlıkların dosya

public class Utils {

    public static List<Message> getMessages() {

    //File file = new File("file:///android_asset/helloworld.txt");

    AssetManager assetManager = getAssets();
    InputStream ims = assetManager.open("helloworld.txt");

     }
}

Varlıkların bu kod, bir dosyayı okumaya çalışıyorum kullanıyorum. Bunu yapmanın iki yolu denedim. File İlk, AssetManager getAssets() yöntemi kullanılarak tanınan değilken FileNotFoundException, aldım. Herhangi bir çözüm var mı?

CEVAP
3 Mart 2012, CUMARTESİ


Ben ne burada tamponlu okuma için bir etkinlik/uzatmak sizin ihtiyaçlarınıza uyacak şekilde değiştirin

BufferedReader reader = null;
try {
    reader = new BufferedReader(
        new InputStreamReader(getAssets().open("filename.txt")));

    // do reading, usually loop until end of file reading  
    String mLine = reader.readLine();
    while (mLine != null) {
       //process line
       ...
       mLine = reader.readLine(); 
    }
} catch (IOException e) {
    //log the exception
} finally {
    if (reader != null) {
         try {
             reader.close();
         } catch (IOException e) {
             //log the exception
         }
    }
}

EDİT : cevabım eğer sorunuza bir faaliyet dışında nasıl yapacağım konusunda ise belki de işe yaramaz. Eğer sorunuza bir dosya okumak için ne kadar basit ise varlıktan sonra cevap yukarıda.

GÜNCELLEME:

Bu tür sadece İnputStreamReader çağrı türü ekleyin belirten bir dosyayı açmak için izleyin.

BufferedReader reader = null;
try {
    reader = new BufferedReader(
        new InputStreamReader(getAssets().open("filename.txt"), "UTF-8")); 

    // do reading, usually loop until end of file reading 
    String mLine = reader.readLine();
    while (mLine != null) {
       //process line
       ...
       mLine = reader.readLine(); 
    }
} catch (IOException e) {
    //log the exception
} finally {
    if (reader != null) {
         try {
             reader.close();
         } catch (IOException e) {
             //log the exception
         }
    }
}

EDİT

@Stan diyor açıklamada, verdiğim kod satırlarını özetliyor. mLine Her pas yerini aldı. //process line Bu yüzden yazmıştım. Dosya veri (i.bir çeşit içeriyor sanırım e bir kişi listesi) ve her satır ayrı ayrı işlenmelidir.

Durumda sadece mLine her özetle olacak her türlü işlem yapmadan dosyayı yüklemek için StringBuilder() pass kullanarak ve her geçişte eklemek istiyorum.

BAŞKA BİR DÜZENLEME

@Vincent yoruma göre finally blok ekledim.

Ayrıca Java 7 ve üst try-with-resources son Java AutoCloseable Closeable özelliklerini kullanmak için kullanılabilir olduğunu unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Россия

    Google Ро

    9 Temmuz 2007
  • martin shervington

    martin sherv

    7 EKİM 2011
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010