2017-02-04 1 views
0

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

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

Хотя он не показан, метод по умолчанию запускает createFile(), writeFile («Hello File!») И readFile() в порядке после кода по умолчанию, который содержится в методе.

Context context = this; 

String autoFileName = "AutoDataFile.txt"; 
File path; 
File myFile; 

String insideText = "NOTHING"; 

public void createFile(){ 
    path = context.getFilesDir(); 
    myFile = new File(path, autoFileName); 
} 

public void writeFile(String text){ 
    try { 
     FileOutputStream stream = new FileOutputStream(myFile); 
     stream.write(text.getBytes()); 
     stream.write(",".getBytes()); 
     stream.write("Second input!".getBytes()); 
     stream.close(); 
     System.out.println("SUCCESS?: MAY HAVE WRITTEN TO FILE"); 
    } catch (Exception e){ 
     e.printStackTrace(); 
     System.out.println("ERROR: DID NOT WRITE TO FILE"); 
    } 
} 

public void readFile(){ 
    try { 
     Scanner fileStream = new Scanner(myFile); 
     insideText += " " + fileStream.useDelimiter(",").nextLine(); 
     System.out.println("SUCCESS?: MAY HAVE READ FROM FILE"); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     System.out.println("ERROR: DID NOT READ FROM FILE"); 
    } 
} 
+0

Зачем вам нужно писать файл, читать его и/или перемещать? Я спрашиваю, может быть, вы можете делать все, что хотите, по-другому. –

+0

Планируется получить данные из приложения в текстовом файле, подключить его к компьютеру и перетащить на него. Затем я могу взять его и импортировать в файл excel. Я хочу сделать это так, потому что это просто, и я не могу сделать ничего более сложного, потому что у меня не будет подключения к Интернету, когда этот процесс произойдет. – AtomicBrawlers

ответ

0

Вы можете сделать это:

К вашему build.gradle

compile 'net.sf.opencsv:opencsv:2.3' 

Затем добавить в свой манифест

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

Затем сделать свой файл следующим образом:

public void writeCSV(ArrayList<String> content) { 
    //Point a directory to the external storage 
    File exportDir = new File(Environment.getExternalStorageDirectory(), ""); 
    if (!exportDir.exists()) { 
     exportDir.mkdirs(); 
    } 
    //formatter for the date associated with the file name 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 
    //inner file to be the location of the csv 
    File csv = new File(exportDir, "csvdata_" + sdf.format(Calendar.getInstance().getTime()) + ".csv"); 
    try { 
     //create the file and the writer which will append our data 
     csv.createNewFile(); 
     CSVWriter writer = new CSVWriter(new FileWriter(csv)); 
     //loop through some desired content 
     for (String s : content) { 
      //writes the string and separates by a comma (spreadsheet format) 
      writer.writeNext(s); 
     } 
     //close the writer 
     writer.close(); 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} //end 
+0

Хммм, я пробовал это, и я все еще не могу найти файл в любом месте. Я даже не могу найти папку com.appname.android. Есть ли способ сделать это, не укореняя телефон? Я бы так подумал? – AtomicBrawlers

+0

должен быть «Мои файлы» -> «Хранилище устройств» и прокрутите вниз – KoalaKoalified

Смежные вопросы