Intereting Posts
Список близких мест без использования объекта карты на android Программно использовать setTextSize для? Attr / textAppearanceLarge Запуск анимации по кадрам Как работает getSystemService ()? Являются ли доменные имена приложений Android используемыми для чего-либо, кроме уникальной идентификации приложения? Исключение Исключения Исключения Исключения Исключения Исключения Microsoft Android Mediaplayer Webcal: // поддержка на Android не работает – есть ли поддерживаемая альтернатива календаря Gradle: как включить локальную банку из зависимого Java-проекта в сборке Android? «Net :: ERR_CACHE_MISS» при загрузке внешнего URL-адреса в Кордове Как отменить уведомление о неожиданном / принудительном завершении приложения Кнопка остановки Android Studio не останавливается Класс Android LocationClient устарел, но используется в документации Поддерживает ли Android TTS язык разметки синтеза речи? Android Studio Gradle новый "применить плагин" Изменение цвета поля представления InfoWindow маркера в google maps api v2

Java.lang.IllegalArgumentException: содержит разделитель путей

У меня есть имя файла в моем коде:

String NAME_OF_FILE="//sdcard//imageq.png"; FileInputStream fis =this.openFileInput(NAME_OF_FILE); // 2nd line 

Я получаю сообщение об ошибке 2-й строки:

05-11 16: 49: 06.355: ERROR / AndroidRuntime (4570): вызвано: java.lang.IllegalArgumentException: Файл //sdcard//imageq.png содержит разделитель путей

Я также пробовал этот формат:

 String NAME_OF_FILE="/sdcard/imageq.png"; 

Solutions Collecting From Web of "Java.lang.IllegalArgumentException: содержит разделитель путей"

Этот метод открывает файл в частной области данных приложения. Вы не можете открывать файлы в подкаталогах в этой области или из других областей, используя этот метод. Поэтому используйте конструктор FileInputStream напрямую, чтобы передать путь с каталогом в нем.

Решение:

 FileInputStream fis = new FileInputStream (new File(NAME_OF_FILE)); // 2nd line 

Метод openFileInput не принимает разделители путей.

Не забывайте

 fis.close(); 

в конце.

OpenFileInput () не принимает пути, только имя файла, если вы хотите получить доступ к пути, используйте новый файл (путь) и соответствующий FileInputStream

Вы не можете использовать путь с разделителями каталогов напрямую, но вам нужно будет создать файл-файл для каждого каталога.

ПРИМЕЧАНИЕ. Этот код создает каталоги, ваш может не понадобиться …

 File file= context.getFilesDir(); file.mkdir(); String[] array=filePath.split("/"); for(int t=0; t< array.length -1 ;t++) { file=new File(file,array[t]); file.mkdir(); } File f=new File(file,array[array.length-1]); RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f,append); 
 File file = context.getFilesDir(); file.mkdir(); String[] array = filePath.split("/"); for(int t = 0; t < array.length - 1; t++) { file = new File(file, array[t]); file.mkdir(); } File f = new File(file,array[array.length- 1]); RandomAccessFileOutputStream rvalue = new RandomAccessFileOutputStream(f, append); 

Я решил этот тип ошибки, создав каталог в событии onCreate, затем обратившись к каталогу, создав новый файловый объект в методе, который должен сделать что-то вроде сохранения или извлечения файла в этом каталоге, надеюсь, что это поможет!

  public class MyClass { private String state; public File myFilename; @Override protected void onCreate(Bundle savedInstanceState) {//create your directory the user will be able to find super.onCreate(savedInstanceState); if (Environment.MEDIA_MOUNTED.equals(state)) { myFilename = new File(Environment.getExternalStorageDirectory().toString() + "/My Directory"); if (!myFilename.exists()) { myFilename.mkdirs(); } } } public void myMethod { File fileTo = new File(myFilename.toString() + "/myPic.png"); // use fileTo object to save your file in your new directory that was created in the onCreate method } }