-3
public class Test {
public static void main(String args[])
{
    String numbers[];
    numbers = new String[81];


    try {
            FileInputStream fileInput = new FileInputStream("level.txt");
            int r,index=0;
            char y;
            while ((r = fileInput.read()) != -1) {
               y = (char)r;
               numbers[index++] = y + "";
            }
        }catch(Exception e){System.out.println("you are pawned !!");}

        for(int i=0;i<81;i++)
        System.out.println(numbers[i].length());
}
}

上面的代码在 Java 中运行得非常好,但是当我在 android 中使用它时,它给出了错误 - “不幸的是设备已经停止工作”。“Test.java”和“level.txt”也在同一个文件夹中,所以我看不出它在android中不起作用的任何原因。

4

2 回答 2

0

首先,此代码不是 Android 代码,因此我假设您将复制/粘贴您的方法的内容到您的主要活动的 onCreate() 方法中

其次,您正在读取文件,该文件在您的设备上的什么位置?例如,它是在您的资产文件夹中,还是在 SD 上,或者在哪里!?

这个文件甚至在移动设备上都不存在,所以它怎么能访问它......在android中处理文件IO的一种简单方法是使用

getDir()

例如 :

File directory = getDir() // from your activity
File file = new File(directory,"level.txt");
FileInputStream inputStream = new FileInputStream(file);
// and so on
于 2013-09-21T12:35:44.760 回答
0

android 架构中没有“Test.java 和 level.txt 在同一个文件夹中”之类的东西。

在android中有内部和外部存储。您可以通过两种不同的方式获取其根目录。

外部存储(sdcard 文件夹):在这里您不必像内部存储器那样使用代码保存文件。你可以把它移到你的SD卡上。

String path = Environment.getExternalStorageDirectory() + "/level.txt";
FileInputStream fileInput = new FileInputStream(path);

内部存储器(应用程序私有磁盘)

String path this.getFilesDir().getAbsolutePath() + "/" + name;
FileInputStream fileInput = new FileInputStream(path);

通过将此添加到 minifest 文件,授予您的应用程序从外部存储器读取/写入的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

应用程序中有很多地方可以放入文件。比如资产和原始文件夹。

获取 assets 文件夹中的文件流:

InputStream is = this.getAssets().open("level.txt");

获取原始文件夹中的文件流:

InputStream is = this.getResources().openRawResource(R.raw.level);

祝你好运。

于 2013-09-21T13:02:26.000 回答