Мой ответ:
JFileChooser chooser= new JFileChooser();
chooser.showOpenDialog(chooser);
File file = chooser.getSelectedFile();
String Content = "What you want to append to file";
try
{
RandomAccessFile random = new RandomAccessFile(file, "rw");
long length = random.length();
random.setLength(length + 1);
random.seek(random.length());
random.writeBytes(Content);
random.close();
}
catch (Exception exception) {
//exception handling
}
У меня проблема. Когда вы создаете новый файл, используя File file = new File (path), не добавляйте file://
перед этим путем.
Это правильно -
String url = "/storage/emulated/0/Android/data/com.verna.poc/files/Download/mypdf.pdf";
File file= new File(url);
Это неправильно -
String url = "file:///storage/emulated/0/Android/data/com.verna.poc/files/Download/mypdf.pdf";
File file= new File(url);
Вы пытаетесь поделиться файлом из внутреннего хранилища с другим приложением. Вам нужно будет создать провайдер файлов, чтобы это работало. Вам нужно будет указать каталог, для которого вы хотите, чтобы провайдер файлов генерировал Uris для
FileProvider - это специальный подкласс ContentProvider, который обеспечивает безопасный общий доступ к файлам, связанным с приложением, путем создания контента: // Uri для файла вместо файла: /// Uri.
FileProvider может генерировать URI контента только для файлов в каталогах, которые вы указали заранее. Чтобы указать каталог, укажите его область хранения и путь в XML, используя дочерние элементы элемента. Например, следующий элемент paths сообщает FileProvider, что вы намереваетесь запрашивать URI контента для подкаталога images / вашей личной файловой области.
blockquote>Этот ответ имеет хороший пример по этой ссылке
Вот страница документации для
FileProvider
обращаются к файлу из приложения, которому принадлежит этот личный каталог - Intent
не будет его обрезать, потому что он мог быть отправлен любым приложением. и если он должен быть средством выбора файлов Intent
, то создайте общий каталог для своего приложения на SD-карте, где любое приложение сможет получить к нему доступ; обычный каталог Downloads
также подойдет для этого. другой вариант (как изначально предлагалось) состоял бы в создании простого средства выбора файлов, которое находится в приложении, так что для выбора файла не потребовалось бы Intent
... все это имеет определенные преимущества и недостатки; выберите одну возможность, которая подходит вам лучше всего ... в общем, это частное или общее хранилище.