File file = new File("D:/어딘가 공백이 있는 한글 경로/무언가 한글과 공백이 섞인 파일명.txt");
이렇게 하면 괜찮습니다. Exception 안떨어집니다. file.getnames() 됩니다.
그런데 FileInputStream같은걸 하면 NotFoundException이 나옵니다.
어딘가 인터넷 뒤졌더니 jsp 한글처리 어쩌구 나온거 참조해서
FileInputStream fis = new FileInputStream(new String(filename.getBytes("8859_1"), "EUC_KR"));
이렇게 getBytes라는것도 써봤는데도 Exception이 떨어집니다.
어떻게 하면 한글로된 파일명을 읽을수있을까요 (공백이 없어도 한글은 무조건 못읽더라고요)
ps. 아래 댓글 달아주신분이 있어서 첨부합니다.
문서내용을 못읽는게 아니라, 한글 파일명으로된 문서를 여는 동작 자체가안됩니다.
File은 되지만, FileInputStream이고 FileReader고 간에 생성자 호출시 항상 FileNotFoundException이 납니다.
try {
BufferedReader br = new BufferedReader( new FileReader( new File( "테스트.txt" ) ) );
String buf = null;
while( ( buf = br.readLine() ) != null ) {
System.out.println( buf );
}
br.close();
} catch( Exception e ) {}
방금 제가 짜봤는데 잘 받아와집니다.
보니까 경로설정의 문제가 있는 것 같습니다.
. 이나 .. 그리고 / 이것을 잘 조합해서 해보시면 잘 받아와집니다.^^
FileInputStream에다가 왜 파일이름을 넣죠?
보통
FileReader fr = new FileReader( new File( "파일경로및이름.txt" ) );
이렇게 사용해서 파일을 읽으면 문자형태의 인풋스트림인 File클래스를 FileReader로 받으면 한글인 유니코드도 받아집니다.
File클래스 자체가 인풋스트림인걸로 알고 있습니다.
FileReader는 인풋스트림보다 한단계 위구요.
FileInputStream은 인풋스트림이라 File도 인풋스트림이고 그래서 new로 생성자로 못 넘겨주는걸로 알고 있습니다.
파일이름을 가져올려고 하는데 그게 한글이라 깨진다면 FileReader클래스로 상속해서 사용하면 문자 형태를 한글형태로
바꿔서 가공해주기 때문에 문제 없을 껍니다.