Создание объекта File в памяти из строки в Java
У меня есть функция, которая принимает файл в качестве аргумента. Я не хочу создавать/записывать новый файл (у меня нет доступа на запись в файловую систему), чтобы передать мои строковые данные в функцию. Я должен добавить, что строковые данные не существуют в файле (поэтому я не могу прочитать свои данные из файла).
могу ли я использовать потоки и "бросать" их в файловые объекты?
5 ответов:
нет; экземпляры класса
Fileпредставляют собой путь в файловой системе. Поэтому вы можете использовать эту функцию только с файлом. Но, возможно, есть перегрузка, которая принимаетInputStreamвместо?
обычно, когда метод принимает файл, рядом есть другой метод, который принимает поток. Если это не так, API плохо закодирован. В противном случае вы можете использовать временные файлы, где разрешение обычно предоставляется во многих случаях. Если это апплет, вы можете запрос разрешения на запись.
пример:
try { // Create temp file. File temp = File.createTempFile("pattern", ".suffix"); // Delete temp file when program exits. temp.deleteOnExit(); // Write to temp file BufferedWriter out = new BufferedWriter(new FileWriter(temp)); out.write("aString"); out.close(); } catch (IOException e) { }
A File объект в Java-это представление путь к каталогу или файлу, а не сам файл. Вам не нужно иметь доступ на запись в файловую систему, чтобы создать
Fileобъект, он нужен только в том случае, если вы собираетесь на самом деле писать в файл (используя FileOutputStream например)
The
Fileкласс представляет "идея" файла, а не реальной ручкой использовать для ввода-вывода, поэтомуFileкласс.exists()способ, чтобы сказать вам, если файл существует или нет. (Как вы можете иметьFileобъект, который не существует?)напротив, сооружают
new FileInputStream(new File("/my/file"))дает вам фактический поток для чтения байтов.
FileReader r = new FileReader(file);С помощью средства чтения файлов загрузите файл, а затем запишите его содержимое в строковый буфер.
ссылка выше показывает пример, как это сделать. Как и в других сообщениях к этому ответу, чтобы загрузить файл в память, вам не нужен доступ к записи, если вы не планируете вносить изменения в фактический файл.
Comments