Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从原始资源文本文件读取_Java_Android - Fatal编程技术网

Java 从原始资源文本文件读取

Java 从原始资源文本文件读取,java,android,Java,Android,我试图在Android Studio的res\raw文件中保存一个.txt文件,并读取/解析该文件。我在一个名为“raw”的文件夹中有一个文件“my_file.txt”,它是我在“res”目录中创建的(我没有创建) 我认为我的主要问题是:当创建文件对象(与Scanner对象一起使用)时,我应该为文本文件传递什么路径 这是我的密码: private void readFile(){ Scanner scanner = null; try { scanner = ne

我试图在Android Studio的res\raw文件中保存一个.txt文件,并读取/解析该文件。我在一个名为“raw”的文件夹中有一个文件“my_file.txt”,它是我在“res”目录中创建的(我没有创建)

我认为我的主要问题是:当创建文件对象(与Scanner对象一起使用)时,我应该为文本文件传递什么路径

这是我的密码:

private void readFile(){
    Scanner scanner = null;
    try {
        scanner = new Scanner(new File("\\res\\raw\\my_file.txt"));  //I've also tried without the .txt extension
        Log.v("readFile->try","Trying to read file.");
    }catch(Exception e)
    {
        //Send error message.
    }
    if(scanner != null) {
        while (scanner.hasNext()) {
            String[] line = scanner.nextLine().split("\t");
            //Process string here
        }
    }
}

我建议你把它放在
src/main
文件夹下的
assets
文件夹中。然后可以使用
getAssets
方法像这样检索文件

 InputStream in = (Activity)getContext().getAssets().open("my_file.txt")

如果该文件夹不存在,请创建一个:-/

认为您正在按照

InputStream is = ctx.getResources().openRawResource(res_id);

其中,ctx是上下文的实例,或者您可以使用此函数

private String readFile()
{
String myData = "";
File myExternalFile = new File("assets/","log.txt");
try {
    FileInputStream fis = new FileInputStream(myExternalFile);
    DataInputStream in = new DataInputStream(fis);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    String strLine;
    while ((strLine = br.readLine()) != null) {
        myData = myData + strLine + "\n";
    }
    br.close();
    in.close();
    fis.close();
 } catch (IOException e) 
    {
         e.printStackTrace();
    }
   return myData;
}

刚刚经过路径位置。

感谢您的快速回复!尝试成功。:)对于其他人来说,成功来自于我在“res”目录中创建的“raw”文件夹中的文件。例如,ProjectName\app\src\main\res\raw\text\u file.txtI尝试了测试。出于某种原因,这在我的应用程序中不起作用。首先,无法识别getContext()方法(我改为getApplicationContext()。另外,我通过强制转换为活动并尝试存储在InputStream中,得到了一个错误。是否应删除对某个活动的强制转换?这超出了我的理解范围,所以请大家集思广益!谢谢你的回答!是的,这取决于您编写代码的位置,如果您在
活动中编写,那么只需编写
getAssets()。打开(“my_file.txt”)
。如果在片段中,则
getActivity().getAssets().open(“my_file.txt”)
。如果您是从其他地方写作,则需要将活动作为上下文传递,然后将其转换为活动。取决于你的使用