2012-06-05 4 views
-1

jTable 인스턴스를 Excel 파일로 변환하는 앱이 있습니다. 이전 질문에서 FileOutputStream()을 사용하는 데 문제가 있었으며 폴더/파일에 액세스하는 AD 사용자의 권한 내에 문제가 있음이 밝혀졌습니다. 상급자가 권한을 변경할 수 없으므로 대신 FileWriter()을 사용하여 의지했습니다. 유일한 문제는 열어 놓은 파일이 손상되었다는 경고를 사용자에게 계속 전하는 것입니다. 다음은 경고입니다.FileWriter() 파일 손상 경고

열려고하는 파일 'filename.xls'은 파일 확장명이 아닌 다른 형식입니다. 파일을 열기 전에 파일이 손상되지 않았고 신뢰할 수있는 출처인지 확인하십시오. 지금 파일을 열시겠습니까?

Excel 2007의 파일 확장명 보안에있는 솔루션을 검색했습니다. 정보는 찾을 수 있습니다 here

응용 프로그램이 다루는 모든 워크 스테이션의 시스템 레지스트리에서 일부 구성을 만들었습니다.

필자는 Office 14에 손상된 파일 경고를 제거 할 수 있는지 물어보고 싶습니다. 내 우수의 워크 스테이션 인 워크 스테이션 중 하나에 Office 14가 있기 때문에 경고합니다. 시스템 레지스트리의 변경으로 인해 손상된 파일이 중지되지 않았습니다. 그의 워크 스테이션에서 경고.

+0

파일을 쓰는 형식은 무엇입니까? 형식이없는 단순한 Excel 파일 인 경우 쉼표로 구분 된 값 파일 (확장자가 ".csv") 만 사용하면됩니다. – Helium

답변

3

"부두 프로그래밍"관행에 빠지다는 인상을받습니다. 즉 당신이 이해하지 못하는 해결책을 당신이 이해하지 못하는 문제에 적용하는 것입니다.

첫째

이 :

내가 FileOutputStream에()를 사용하여 문제를했고 그것이 문제가 폴더/파일에 액세스에서 AD 사용자의 권한 내에있는 것으로 나타났다. 상급자가 권한을 변경할 수 없으므로 대신 FileWriter()를 사용하여 작업을 수행했습니다.

솔직히 말해서, 이것은 의미가 없습니다. new FileOutputStream(File)을 사용하여 파일을 열 수 없으면 new FileWriter(File)으로 열 수 없습니다. 왜? 생성자에 대한 소스 코드는이 때문에 : 즉

public FileWriter(File file) throws IOException { 
     super(new FileOutputStream(file)); 
    } 

의 FileWriter 생성자가하는 첫 번째 것은 당신이 작동하지 않습니다 말하는 FileOutputStream에 생성자를 호출하는 것입니다! (이러한 생성자의 다른 오버로드에도 동일하게 적용됩니다.)

그렇다면 파일 유형이 접미사와 일치하지 않기 때문에 현재 XLS 파일을 열지 못하게하는 것이 Excel의 현재 문제입니다. 그리고 제안 된 솔루션은 레지스트리를 망쳐 버리는 것입니다. 하지만 확실하게 올바른 방법은 파일 이름이 접미사와 일치하지 않는 것입니다.

  • mistaKe를 파일 형식으로 만들었습니까? (예 : 'FileWriter를 사용하여 작성 했으므로)?
  • 사용한 스프레드 시트 형식에 대해 잘못된 파일 접미사를 선택하셨습니까?
  • 잘못된 MIME 형식으로 사용자의 컴퓨터에 다운로드하고 있습니까?

모든 클라이언트 컴퓨터의 레지스트리를 강타하고 있습니다. 단지 일부 웹 사이트에서 읽기 때문에 ...그거 부두 오!

당신의 사장님이 당신에게 광고 특권으로 어지러운 일을 저지른 것도 놀랍지 않습니다. 이 시점에서, 그는 아마도 당신이 심각한 피해를 입을 것이라고 걱정하고 있습니다. 그런데


은 경고 멀리 갈 수 있도록 해킹 레지스트리 실제로 공격에 대한 사용자의 PC를 강화하기 위해 설계된 보안 검사를 해제한다. 그것은 당신의 문제에 대한 건전한 해결책으로 나를 공격하지 않습니다.