Tenho uma função que aceita Arquivo como argumento. Não quero criar / gravar um novo arquivo (não tenho acesso de gravação ao sistema de arquivos) para passar meus dados de string para a função. Devo acrescentar que os dados da String não existem em um arquivo (portanto, não posso ler meus dados de um arquivo).
Posso usar Streams e "lançá-los" em objetos File?
File
objeto? Como as respostas declararam, umFile
objeto é como uma referência a um local no sistema de arquivos e, portanto, seria difícil de simular sem um arquivo real. Se, no entanto, sua função tiver aFileReader
ou aFileInputStream
, você poderá facilmente modificar o código para aceitar entradas que não sejam de arquivo.Respostas:
Não; instâncias de classe
File
representam um caminho em um sistema de arquivos. Portanto, você pode usar essa função apenas com um arquivo. Mas talvez haja uma sobrecarga que leva umInputStream
?fonte
Normalmente, quando um método aceita um arquivo, há outro método próximo que aceita um fluxo. Se não for o caso, a API está mal codificada. Caso contrário, você pode usar arquivos temporários, onde a permissão geralmente é concedida em muitos casos. Se for um miniaplicativo, você pode solicitar permissão de gravação .
Um exemplo:
fonte
Um objeto File em Java é uma representação de um caminho para um diretório ou arquivo, não o próprio arquivo. Você não precisa ter acesso de gravação ao sistema de arquivos para criar um
File
objeto, você só precisa dele se realmente pretende gravar no arquivo (usando um FileOutputStream, por exemplo)fonte
A
File
classe representa a "ideia" de um arquivo, não um identificador real a ser usado para E / S. É por isso que aFile
classe tem um.exists()
método, para dizer se o arquivo existe ou não. (Como você pode ter umFile
objeto que não existe?)Por outro lado, construir um
new FileInputStream(new File("/my/file"))
fornece um fluxo real para ler bytes.fonte
Use um leitor de arquivos, carregue o arquivo e grave seu conteúdo em um buffer de string.
exemplo
O link acima mostra um exemplo de como fazer isso. Como outra postagem para esta resposta diz para carregar um arquivo na memória, você não precisa de acesso de gravação, desde que não planeje fazer alterações no arquivo real.
fonte