File을 인수로 허용하는 함수가 있습니다. 필자는 문자열 데이터를 함수에 전달하기 위해 새로운 파일 (파일 시스템에 대한 쓰기 권한이 없음)을 작성/작성하고 싶지 않습니다. 나는 문자열 데이터가 파일에 존재하지 않는다는 것을 추가해야한다. 그래서 파일로부터 데이터를 읽을 수 없다.Java 문자열에서 메모리에 File 객체 만들기
Streams를 사용하여 File 객체에 "캐스트"할 수 있습니까?
File을 인수로 허용하는 함수가 있습니다. 필자는 문자열 데이터를 함수에 전달하기 위해 새로운 파일 (파일 시스템에 대한 쓰기 권한이 없음)을 작성/작성하고 싶지 않습니다. 나는 문자열 데이터가 파일에 존재하지 않는다는 것을 추가해야한다. 그래서 파일로부터 데이터를 읽을 수 없다.Java 문자열에서 메모리에 File 객체 만들기
Streams를 사용하여 File 객체에 "캐스트"할 수 있습니까?
없음; 클래스 File
의 인스턴스는 파일 시스템의 경로를 나타냅니다. 따라서이 기능은 파일에만 사용할 수 있습니다. 하지만 과부하가 발생하여 대신 InputStream
이 필요합니까?
아니요 :/과부하 기능 없음 –
FileReader r = new FileReader(file);
파일 판독기를 사용하여 파일을로드 한 다음 해당 내용을 문자열 버퍼에 씁니다.
는링크는 위의 당신에게이 작업을 수행하는 방법의 예를 보여줍니다. 이 답변의 다른 게시물에서 메모리에 파일을로드하는 것은 실제 파일을 변경할 계획이 없다면 쓰기 권한이 필요하지 않다는 것입니다.
File Java의 개체는 파일 자체가 아닌 디렉터리 또는 파일의 경로를 나타냅니다. File
객체를 만들기 위해 파일 시스템에 대한 쓰기 권한이 필요하지 않습니다. 예를 들어 FileOutputStream을 사용하여 실제로 파일에 쓸 경우에만 필요합니다.
File
클래스는 "아이디어" I/O에 사용할 실제 핸들이 아닙니다. 따라서 File
클래스에 파일이 있는지 여부를 알려주는 .exists()
메서드가있는 이유가 여기에 있습니다. (실제로 존재하지 않는 File
개체를 가질 수 있습니까?)
대조적으로 new FileInputStream(new File("/my/file"))
을 구성하면 실제 스트림에서 바이트를 읽을 수 있습니다.
좋은 지적; 그래도 질문에 대답하지 않습니다. – Jus12
일반적으로 메소드가 파일을 받아 들일 때 근처에 스트림을 허용하는 다른 메소드가 있습니다. 그렇지 않은 경우 API가 잘못 코딩됩니다. 그렇지 않으면 임시 파일을 사용할 수 있습니다. 일반적으로 권한은 대개의 경우 부여됩니다. 애플릿의 경우 request write permission 수 있습니다.
예 :
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) {
}
쓰기 권한을 요청할 수 없습니다 (Google AppEngine) –
'File' 객체를 사용하는 코드를 링크하거나 게시 할 수 있습니까? 답이 말했듯이'File' 객체는 파일 시스템의 위치에 대한 참조와 같으므로 실제 파일이 없으면 시뮬레이션하기가 어렵습니다. 그러나, 함수가'FileReader' 나'FileInputStream'을 취한다면, 비 파일 입력을 받아들이도록 코드를 쉽게 수정할 수 있습니다. – 101100
메모리 매핑 된 파일을 선택할 수 있습니다. 이들은 Java 프로그램이 메모리에서 직접 내용에 액세스 할 수있게 해주는 Java의 특수 파일입니다. 자세한 내용은 다음 링크를 참조하십시오. http://javarevisited.blogspot.com/2012/01/memorymapped-file-and-io-in-java.html – Bikku