В моем приложении я пытаюсь написать файл, из которого я тогда буду внутренне читать.Внутренние записи файлов
У кого-нибудь есть пример того, как писать файлы в установочные папки приложения?
В моем приложении я пытаюсь написать файл, из которого я тогда буду внутренне читать.Внутренние записи файлов
У кого-нибудь есть пример того, как писать файлы в установочные папки приложения?
использовать следующий код для записи из Edittext
в файл и чтение из файла в Edittext
установить следующее разрешение на AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
JAVA CODE
EditText LoadedText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LoadedText=(EditText) findViewById(R.id.LoadedText);
File sdcard = Environment.getExternalStorageDirectory();
//Get the text file
File file = new File("/sdcard/RouterSetup.txt");
//Read text from file
StringBuilder text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close();
}
catch (IOException e) {
//You'll need to add proper error handling here
}
LoadedText.setText(text.toString());
}
public void saveFile() {
try {
File myFile = new File("/sdcard/RouterSetup.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
myOutWriter.append(LoadedText.getText());
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(),
"Done writing SD " + LoadedText.getText() + ".txt",
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
getFilesDir() vs Environment.getDataDirectory() общественного getFilesDir File()
Возвращает абсолютный путь к каталогу в файловой системе, где файлы, созданные с помощью openFileOutput(String, int)
сохраняются.
общественности статической getExternalStorageDirectory File()
Возврат основной внешний каталог хранения. Этот каталог в настоящее время недоступен, если он был установлен пользователем на своем компьютере, был удален с устройства или возникла какая-то другая проблема. Вы можете определить его текущее состояние с помощью getExternalStorageState()
.
Если вы хотите, чтобы ваш путь к приложению использовать getFilesDir()
, который даст вам тракт /data/data/your package/files
Вы можете получить путь с помощью окружающей среды вара ваших данных/пакета, используя
getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath();
, который будет возвращать путь из корневого каталога вашего внешнего хранилища как /storage/sdcard/Android/data/your pacakge/files/data
Для доступа к внешним ресурсам вам необходимо предоставить разрешение WRITE_EXTERNAL_STORAGE
и READ_EXTERNAL_STORAGE
в вашем манифесте.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
С каким типом файлов вы говорите? Для хранения данных вы можете использовать shared preferences. Для типа СМИ вы можете использовать media storage.
Это xml-файл. – snj15
//here i am downloading file from server and writing
String download_link = "some server location";
URL url = new URL(download_link);
HttpsURLConnection c = null;
if (url.getProtocol().toLowerCase().equals("https")) {
trustAllHosts();
c = (HttpsURLConnection) url.openConnection();
c.setHostnameVerifier(DO_NOT_VERIFY);
}
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String PATH = Environment.getExternalStorageDirectory() + "/download/";
File file = new File(PATH);
file.mkdirs();
File outputFile = new File(file, "Mobi.apk");
if(outputFile.exists()){
outputFile.delete();
}
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
you need to add permission in manifest file:
uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
Почему вы устанавливаете решение для загрузки с сервера, ему нужно написать и прочитать файл из установочных папок приложения? –
Самое простое решение
String filename = "stuff.xml";
READ
FileInputStream stream = ctx.openFileInput(filename);
(и ниже очень простой пример разбора файл)
BufferedReader buffReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
try {
while ((line = buffReader.readLine()) != null) {
...
// do something cool
...
}
} catch (IOException e) {
Log.e("MyApp", "SCREAAAAAM", e);
}
WRITE
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(ctx.openFileOutput(filename, Context.MODE_PRIVATE));
outputStreamWriter.write("this is text not xml :(");
Так что две основных вещи, чтобы отметить является openFileInput
и openFileOutput
методы Context
(т.е. вашей деятельности), которая заботиться о тяжелой
бы Environment.getExternalStorageDirectory() ; указать путь к установленному приложению? Знаете ли вы, какой путь получит getFilesDir()? – snj15
, пожалуйста, проверьте ответ после обновления –
'установочные папки приложения? Что вы подразумеваете под этим? Вы не можете писать там, если не укоренились. – greenapps