2013-10-02 2 views
1

Я пытаюсь создать приложение Android, которое читает текстовый файл чисел из папки активов, затем копирует эти числа в массив, удваивает значение каждого номера и записывает новый набор в два раза номера в каталог внешних файлов приложений. Мое приложение падает после ввода двух имен файлов. Я считаю, что большая часть моей ошибки связана с тем, как я пытался писать во внешний файл. Я прочитал много разных сообщений, и я не могу точно понять, как правильно писать.Приложение для чтения и записи Android

public void readArray() { 

    EditText editText1; 
    EditText editText2; 
    TextView tv; 

    tv = (TextView) findViewById(R.id.text_answer); 
    editText1 = (EditText) findViewById(R.id.input_file); 
    editText2 = (EditText) findViewById(R.id.output_file); 

    int numGrades = 0; 
    int[] gradeList = new int[20]; 

    String fileLoc = (String) (editText1.getText().toString()); 

    try { 
     File inFile = new File("file:///android_asset/" + fileLoc); 
     Scanner fsc = new Scanner(inFile); 

     while (fsc.hasNext()) { 
      gradeList[numGrades] = fsc.nextInt(); 
      numGrades++; 
     } 
    } catch (FileNotFoundException e) { 
     tv.append("error: file not found"); 
    } 

    for (int i = 0; i < gradeList.length; i++) { 
     gradeList[i] = gradeList[i] * 2; 
    } 

    String fileLoc2 = (String) (editText2.getText().toString()); 

    FileWriter fw; 

    //new code 
    File root = Environment.getExternalStorageDirectory(); 
    File file = new File(root, fileLoc2); 

    try { 
     if (root.canWrite()) { 
      fw = new FileWriter(file); 

      //PrintWriter pw = new PrintWriter(fw); 
      BufferedWriter out = new BufferedWriter(fw); 

      for (int i = 0; i < gradeList.length; i++) { 
       out.write(gradeList[i]); 
      } 
      out.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

также жаль спрашивать nooblike вопрос заранее

+1

Вы можете делиться журналами который появляется на консоли при сбое приложения? Похоже, в этой строке есть проблемы: 'File inFile = new File (" file: /// android_asset/"+ fileLoc);' – Peshal

+0

В стороне, вы не упомянули об этом в своем вопросе, но убедитесь, что у вас есть [WRITE_EXTERNAL_STORAGE ] (http://developer.android.com/reference/android/Manifest.permission.html#WRITE_EXTERNAL_STORAGE) в вашем манифесте. – Karl

ответ

0

Вы должны попробовать использовать AssetManager класс, чтобы открыть файлы из активов:

Подробнее здесь: http://developer.android.com/reference/android/content/res/AssetManager.html

Вы можете прочитать file this way:

AssetManager am = context.getAssets();  
InputStream is = am.open("text");  
BufferedReader in = new BufferedReader(new InputStreamReader(is));  
String inputLine;  
while ((inputLine = in.readLine()) != null)   
    System.out.println(inputLine); 
in.close(); 
Смежные вопросы