1

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

所以有我的问题

我的朋友想创建一个非常简单的翻译应用程序,非常非常非常简单。我们是 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;
}



}

错误日志猫

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

1 回答 1

0

getResources().openRawResource() 为您的 Android 项目的 res/raw/ 目录中的文件获取 InputStream。openRawResource() 的参数是一个名为 R.raw 的 int。filename其中filename是不带扩展名的文件名。

因此,该文件不会位于 res/assets/ 目录中。

尽管您可以仔细检查您尝试读取的文件实际上是 res/raw,但对我来说,您可以构建 APK 并获得 R.raw 似乎很奇怪。如果文件实际上不存在,则文件名条目我会使用调试器来单步执行代码并检查变量。

于 2013-10-03T20:26:53.787 回答