исключение не найдено в Android - PullRequest
0 голосов
/ 04 октября 2011

когда я запускаю этот кусок кода как обычное Java-приложение в основном, оно работает нормально. но когда я пытаюсь использовать тот же код в onCreate в одном из упражнений, он говорит, что файл не найден, и ничего не печатает в logcat. Я перепробовал все возможные способы, но не знаю, в чем причина проблемы. Кроме того, в logcat сообщение напоминает исключение для этого файла: /D:/android/Suyesh.2DV106.Assignment3/southern_cities.txt (такого файла или каталога нет). это из-за переднего слеша / D: / .. но я не поместил его туда, и когда я пытаюсь напечатать путь, он не содержит этого / перед D. Но когда я печатаю абсолютный путь, он содержит это / D , В чем здесь проблема? У меня также есть файл манифеста, как показано ниже.

public class TheCityMap extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    try {
        String strFile = Environment.getExternalStorageDirectory() +"/android/Suyesh.2DV106.Assignment3/southern_cities.txt";
        BufferedReader br = new BufferedReader(new FileReader(strFile));
        String strLine = null;
        StringTokenizer st = null;
        int lineNumber = 0, tokenNumber = 0;
        while( (strLine = br.readLine()) != null){
            lineNumber++;
            st = new StringTokenizer(strLine, ",");
            while(st.hasMoreTokens()){
                tokenNumber++;
                System.out.println("Line # " + lineNumber +", Token # " + tokenNumber+ ", Token : "+ st.nextToken());
            }
            tokenNumber = 0; 

        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
        }    

}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="assignment3.demos"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainListActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name="TheCityMap"></activity>
    <uses-library android:name="com.google.android.maps"/>
    <uses-permission android:name="android.permission.INTERNET" > </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" > </uses-permission>
</application>

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Android основан на Linux, поэтому такие вещи, как «D:», никогда не должны работать.

Если файл находится на SD-карте, попробуйте это:

String strFile = Environment.getExternalStorageDirectory() + "/android/Suyesh.2DV106.Assignment3/southern_cities.txt";

В конце ваш путь должен выглядеть примерно так:
"/mnt/sdcard/android/Suyesh.2DV106.Assignment3/southern_cities.txt"

0 голосов
/ 04 октября 2011

Вы пытались использовать:

File file = new File(TheCityMap.class.getResource(/* name */));
BufferedReader reader = new BufferedReader(new FileReader( file ));

или

new BufferedReader(new InputStreamReader(FlowAp.class.getResourceAsStream("" /* name */)))
0 голосов
/ 04 октября 2011

, если D - это каталог внешнего хранилища (SDCard или Flash), используйте Enviroment.getExternalStorageDirectory()

...