2010-04-06 6 views
0

나는 온라인 파일 객체를 얻을 필요가, 그리고 파일의 위치는 알고 http://nmjava.com/Dir_App_IDs/Dir_GlassPaneDemo/GlassPaneDemo_2010_04_06_15_00_SNGRGLJAMX 내 브라우저의 URL에 붙여 넣을 경우Java 파일 URI 오류?

, 나는 지금 내가 노력하고있어,이 파일을 다운로드 할 수 있습니다 자바 그것을 얻을, 내 코드는 다음과 같습니다

String File_Url="http://nmjava.com/Dir_App_IDs/Dir_GlassPaneDemo/GlassPaneDemo_2010_04_06_15_00_SNGRGLJAMX"; 
Object myObject=Get_Online_File(new URI(File_Url)); 

Object Get_Online_File(URI File_Uri) throws IOException 
{ 
    return readObject(new ObjectInputStream(new FileInputStream(new File(File_Uri)))); 
} 

public static synchronized Object readObject(ObjectInput in) throws IOException 
{ 
    Object o; 
    ...... 
    return o; 
} 

그러나 나는 다음과 같은 오류 메시지가 있어요 :

java.lang.IllegalArgumentException: URI scheme is not "file" 
     at java.io.File.<init>(File.java:366) 

왜? 그것을 고치는 방법?

프랭크

+1

질문에 관련 아니지만 : http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc 자바 명명 규칙에 대해 읽어 .html, 자바 스타일이 아닌 코드 작성. – Roman

답변

0

는 FileInputStream에가 인터넷을 통해 읽기 위해 설계되는 경우 .. "file://nmjava.com/Dir_App_IDs/Dir_GlassPaneDemo/GlassPaneDemo_2010_04_06_15_00_SNGRGLJAMX"

+0

나는이 오류가 발생했습니다 : java.lang.IllegalArgumentException : URI가 권한 구성 요소를 가지고 있습니다 at java.io.File. (File.java:368) – Frank

3

잘 모르겠어요 시도

+0

꽤 가까이에, 아주, 고마워, 알았어. 감동! – Frank

+0

영감을 얻게되어 기쁩니다. –

3

new URL(File_Uri).openConnection().getInputStream()는이 목적을 위해 FileInputStream에 사용하지 마십시오보십시오. URL을 만든 다음 입력 스트림을 가져 와서 데이터를 읽습니다.

private byte[] readData (InputStream in) { 
    try { 
     return IOUtils.toByteArray (in); 
    } finally { 
     IOUtils.closeQuietly(in); 
    } 
} 
:
URL url = new URL (fileUrl); 
InputStream inputStream = url.openStream(); 
readData (inputStream); 

는 데이터를 읽는 동안 나는 당신이 (당신이 스트림 작업을 2 개 이상 장소가 특히, 그것은 당신의 시간을 절약하고 더 표현 코드를 만들 수 있습니다) Commons IO 라이브러리를 사용하는 것이 좋습니다

또한 코드에서 Object streams (ObjectInputStream 등)으로 작동합니다. 하지만 그 스트림은 직렬화 된 자바 객체를 읽는 데에만 사용되어야하며 설명에서 이해할 수있는 경우가 아닙니다 (직렬화 된 객체 일 경우 브라우저가 해당 파일을 열지 않았을 경우).

1

내가 영감있어, 정답은 :

Object myObject=Get_Online_File(new URL(File_Url)); 

Object Get_Online_File(URL File_Url) throws IOException 
{ 
    return readObject(new ObjectInputStream(File_Url.openConnection().getInputStream())); 
    // or readObject(new ObjectInputStream(File_Url.openStream())); 
} 
+0

거대한 담당자와 얘들 아, 어떻게이 일을 할 수 있겠 니? (ObjectInputStream와 함께) – Roman