Создать объект File в памяти из строки в Java

У меня есть функция, которая принимает файл как аргумент. Я не хочу создавать/писать новый файл (у меня нет доступа на запись к файловой системе), чтобы передать мои строковые данные в функцию. Я должен добавить, что данные String не существуют в файле (поэтому я не могу прочитать свои данные из файла).

Могу ли я использовать потоки и "отличать" их от объектов File?

Ответ 1

Нет; экземпляры класса File представляют собой путь в файловой системе. Поэтому вы можете использовать эту функцию только с файлом. Но, возможно, есть перегрузка, которая принимает вместо InputStream?

Ответ 2

Обычно, когда метод принимает файл, есть другой метод рядом с которым принимает поток. Если это не так, 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) {
}

Ответ 3

A File объект в Java - это представление пути к каталогу или файлу, а не к самому файлу. Вам не нужно иметь доступ на запись к файловой системе для создания объекта File, вам это нужно только в том случае, если вы намереваетесь фактически записать файл (используя FileOutputStream)

Ответ 4

Класс File представляет "идею" файла, а не фактический дескриптор для ввода-вывода. Вот почему класс File имеет метод .exists(), чтобы сообщить вам, существует ли файл или нет. (Как вы можете иметь объект File, который не существует?)

В отличие от этого, построение a new FileInputStream(new File("/my/file")) дает реальный поток для чтения байтов.

Ответ 5

FileReader r = new FileReader(file);

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

пример

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