不读文件

时间:2013-10-03 19:21:59

标签: java android eclipse file inputstream

首先,我想为我糟糕的英语道歉,我来自斯洛伐克;)

所以有我的问题

我的朋友想要创建一个非常简单的翻译应用程序,非常非常简单。我们是Android的编程初学者,完全是java。问题是,我们的apk在Eclipse中运行良好,所以我们决定创建apk文件并将其安装在我们的设备中。因此,当我们安装它并且存在问题时,我们在设备中的apk不会读取文件在哪里是我们的话。所以我们在eclipse模拟器中再次尝试它并且也不起作用,但在创建apk之前它完全正常工作。我们的文件位于res / raw / dictionary

这是我们的代码

package com.example.dictionary;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

TextView Vstup;
TextView Vystup;
Button presun;
String slovo;
String word;
String found;
Boolean click;
int i;
int j;
String sub;
String strf;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Vstup = (TextView)findViewById(R.id.editText1);
    Vystup = (TextView)findViewById(R.id.textView2);

    presun = (Button)findViewById(R.id.button1);
    presun.setOnClickListener(new OnClickListener() 
    {
        public void onClick(View v)
        {


                try
                {
                    slovo = Vstup.getText().toString(); 
                    InputStream is = getResources().openRawResource(R.raw.dictionary);

                    InputStreamReader inputStreamReader = new InputStreamReader(is);
                    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

                    while((strf = bufferedReader.readLine()) != null)
                    {
                        i = strf.indexOf(":"); // vrati prvu poziciu retazca 
                        j = strf.indexOf(",");
                        sub = strf.substring(0,i); //vyberie zo stringu podretazec od indexu 0 po i
                        if(slovo.equals(sub))
                        {
                            found = strf.substring(i+1,j);
                            word = ("Výstup: " + found);
                            Vystup.setText(word.toString());

                        }
                        else {
                            word = ("Výstup: Word not found");
                            Vystup.setText(word.toString());
                        }

                    }
                    bufferedReader.close();

                }

                catch(Exception e)
                {
                    System.out.println(e);
                }
            }               



    });


}




@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}



}

错误logcat

error opening trace file: no such file or directory(2)

1 个答案:

答案 0 :(得分:0)

getResources()。openRawResource()获取Android项目的res / raw /目录中的文件的InputStream。 openRawResource()的参数是一个名为R.raw。 filename 的int,其中<​​em> filename 是没有扩展名的文件的名称。

因此,该文件不在res / assets /目录中。

虽然您可以仔细检查您尝试阅读的文件实际上是res / raw,但我觉得您可以构建APK并获得R.raw。 filename 条目似乎很奇怪如果文件实际上不存在。我将使用调试器逐步执行代码并检查变量。