У меня есть функция, которая принимает файл в качестве аргумента. Я не хочу создавать / записывать новый файл (у меня нет доступа на запись в файловую систему), чтобы передать свои строковые данные функции. Я должен добавить, что данные String не существуют в файле (поэтому я не могу прочитать свои данные из файла).
Могу ли я использовать потоки и «преобразовывать» их в объекты File?
File
объект? Как указано в ответах,File
объект похож на ссылку на место в файловой системе, поэтому его сложно смоделировать без реального файла. Если, однако, ваша функция принимает aFileReader
или aFileInputStream
, вы можете легко изменить код, чтобы принимать нефайловый ввод.Ответы:
Нет; экземпляры класса
File
представляют путь в файловой системе. Следовательно, вы можете использовать эту функцию только с файлом. Но, может быть, есть перегрузка, которая беретInputStream
взамен?источник
Обычно, когда метод принимает файл, поблизости есть другой метод, принимающий поток. Если это не так, API плохо запрограммирован. В противном случае вы можете использовать временные файлы, разрешение на которые обычно предоставляется во многих случаях. Если это апплет, вы можете запросить разрешение на запись .
Пример:
источник
Объект File в Java - это представление пути к каталогу или файлу, а не сам файл. Вам не нужно иметь доступ на запись в файловую систему для создания
File
объекта, он вам нужен только в том случае, если вы действительно собираетесь записывать в файл (например, используя FileOutputStream )источник
File
Класс представляет собой «идею» файл, а не фактическая ручки , чтобы использовать для ввода / вывода. Вот почему уFile
класса есть.exists()
метод, который сообщает вам, существует файл или нет. (Как у вас может бытьFile
объект, которого не существует?)Напротив, построение
new FileInputStream(new File("/my/file"))
дает вам фактический поток, из которого читаются байты.источник
Используйте средство чтения файлов, загрузите файл, а затем запишите его содержимое в строковый буфер.
пример
Ссылка выше показывает вам пример того, как это сделать. В другом сообщении к этому ответу говорится, что для загрузки файла в память вам не нужен доступ на запись, если вы не планируете вносить изменения в фактический файл.
источник