Intereting Posts
Mpandroidchart – Как я могу избежать повторных значений в Y-оси? Phonegap android – событие deviceready не запущено Android: набор PagerAdapter SetPrimaryItem () вызывается более одного раза Определить, включен ли параметр доступности «Большой текст» на Android Как сделать Android SlidingDrawer слайдом слева? Android IllegalArgumentException для cancelDialog Почему Android-эмуляторы нумеруются как 5554 Как узнать, закончен ли звук в андроиде? BitmapFactory OOM заставляет меня гайки Предпочитайте размер растрового изображения от фактического Uri до загрузки по шкале Нет ошибки «Только исходный поток, создавший иерархию представлений, может коснуться его представлений», когда представление обновляется без задержки Студия Android не может найти указанный файл Android: есть ли способ программирования веб-ярлыка на главном экране? Android adjustResize – Как отключить эффект затухания Как отсортировать HashMap как добавленный в Android с ArrayAdapter

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 } }