Создать объект File в памяти из строки в Java - PullRequest
96 голосов
/ 16 августа 2011

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

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

Ответы [ 5 ]

59 голосов
/ 16 августа 2011

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

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

9 голосов
/ 16 августа 2011

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

6 голосов
/ 16 августа 2011

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

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

0 голосов
/ 16 августа 2011
FileReader r = new FileReader(file);

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

пример

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...