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



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



могу ли я использовать потоки и "бросать" их в файловые объекты?

568   5  

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

    Ничего не найдено.