2013-09-04 6 views
-1

primeface 및 jsf를 사용하여 텍스트 파일을 업로드하고 읽어야합니다. 제 질문은 텍스트 파일을 업로드 할 때 저장되는 위치는 무엇입니까?jsf 및 primeface에서 텍스트 파일을 업로드하고 읽는 방법은 무엇입니까?

import java.io.BufferedReader; 
    import java.io.FileReader; 
    import java.io.IOException; 

    public class BufferedReaderExample { 

public static void main(String[] args) { 

    try (BufferedReader br = new BufferedReader(new FileReader("C:\\testing.txt"))) 
    { 

     String sCurrentLine; 

     while ((sCurrentLine = br.readLine()) != null) { 
      System.out.println(sCurrentLine); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

}

내 또 다른 질문이 예에서는 "C입니다 :

<p:messages showDetail="true" /> 

    <p:fileUpload value="#{send.file }" mode="simple" /> 
    </h:form> 
    <p:commandButton actionListener="#{send.upload}" value="Send" ajax="false" /> 

    //Send.java 

    private UploadedFile file; 

    public void upload() { 
    if(file != null) { 
     FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 

가 나는 또한 파일을 읽기 위해이 예제를 발견 : 여기 내 .xhtml 및 자바 클래스 \ testing.txt "가 경로로 제공됩니까? 업로드 한 파일을 읽으려면 어떤 주소를 제공해야합니까? 내가 혼란스러워서 미안해, 고마워.

+0

파일 객체를 upload()에 사용하고 파일 객체를 사용하고 BufferedReader를 사용하여 한 줄씩 파일을 읽습니다. – newuser

+1

이 샘플을 시도하십시오 http://www.java-tutorial.ch/java-server-faces/file-upload-with-primefaces는 여러분을 도울 것입니다 – newuser

답변

3

텍스트 파일을 업로드 할 때 저장 위치는 어디입니까?

이것은 실제로 귀하의 비즈니스 중 아무 것도 아니며 귀하의 JSF 백업 빈 코드 내부에서 관심을 가져서는 안됩니다. 그것은 메모리에 (부분적으로) 그리고/또는 (부분적으로) 서버의 임시 저장 위치에 저장되며, 간격으로 지워지거나 청소됩니다. 영원한 저장 장소로서의 의도는 전혀 없습니다. 액션/리스너 메소드에서 업로드 된 파일 내용을 읽은 다음 원하는 영구 저장 위치에 저장해야합니다.

예. FilenameUtils 그것이 <p:fileUpload>의 필요한 의존성의 당신이 이미 설치되어 있어야 아파치 코 몬즈 IO의 일부임을

private static final File LOCATION = new File("/path/to/all/uploads"); 

public void upload() throws IOException { 
    if (file != null) { 
     String prefix = FilenameUtils.getBaseName(file.getName()); 
     String suffix = FilenameUtils.getExtension(file.getName()); 
     File save = File.createTempFile(prefix + "-", "." + suffix, LOCATION); 
     Files.write(save.toPath(), file.getContents()); 
     // Add success message here. 
    } 
} 

참고. 또한 위의 예에서 File#createTempFile()은 임시 파일을 정확하게 생성하지 않지만 고유 한 파일 이름을 생성하는 데 사용되었습니다. 그렇지 않으면, 다른 누군가가 우연히 같은 이름의 파일을 우연히 업로드하면 덮어 씁니다. 또한 Files#write()은 Java 7의 일부입니다. 아직 Java 6 이상인 경우 Apache Commons IO IOUtils을 대신 사용하십시오.

관련 문제