2012-05-05 3 views
-1

좋아, 누군가가 내 세부 정보를 입력하여 JPasswordField가 입력 된 내용을 .txt 파일로 저장하는 방법을 설명 할 수 있는지 궁금합니다. 그래서 프로그램을 다시 열면 그 사람이 로그인 할 수있게되고 암호가 맞는지 아닌지 알 수 있습니다. 패스워드의 경우, JOptionPane가 닫아집니다. 나는이 모든 것을 JFrame에 가지고 있으며 "로그인"버튼은 "File"이라는 JMenu의 JMenuBar에 있습니다. 텍스트 파일에서 사용자 이름과 비밀번호를 입력하게하고 사용자 이름과 비밀번호를 설정합니다. 예.Java GUI 스윙, .txt 파일에서 읽기

사용자 이름 = 개빈

암호 = 123

이 그냥 텍스트 파일에 특정 변수를 저장하는 방법은 변수 값이 프로그램 부하를 만들 경우

그래서, 그것은 잘 될 거라고 경우 설명 할 수 있습니다. 나는 또한 스푼 푸딩에 매우 개방적이다. 왜냐하면 내가 받아 들일뿐 아니라 사용하지 않기 때문이다. 나는 이것을 보면서 왜 다른 방식으로 복제 할 것인가로 인해 왜 효과가 있는지 알아 봅니다. 미리 감사드립니다!

P. 예, 몇 가지 조사를 해봤지만 문제는 사람들이 코드를 작성하여 작동 방법에 대한 단서가 없다는 것입니다. Java 프로그래밍에 익숙하지 않습니다. 그래서, 붙여 넣기 코드를 써주세요, 나는 그들을 연구 할 것이지만, 또한 사소한 설명을 던질 수 있다면.

+2

[기본 입문서] (http://docs.oracle.com/javase/tutorial/essential/io/). 또한 해당 암호를 암호화 할 수도 있습니다. – Jeffrey

+1

또한 암호를 문자열로 변환하지 마십시오 (http://stackoverflow.com/questions/10443308/why-gettext-in-jpasswordfield-was-deprecated를 참조하십시오) – Robin

+1

* "사람들은 내가 어떻게 작동할지 알지 못한다 "* (떨림) 사용자는 런타임시 암호를 사용하여 사용자를 인증하면 안됩니다. –

답변

-2

나는 이것이 당신이 찾고있는 정확하게 무엇을 생각 - 잘 설명되어 있습니다 http://cs.saddleback.edu/rwatkins/CS4B/Crypto/FileEncryptor.html

코드하지만 당신은 질문이있는 경우 단지 그들에게 나는 그게입니다 그들에게

잘 대답하려고합니다 가장 간단한 방법 (아마도) 암호화를 사용하여 그것을 할 수 있습니다. 확실히 좋은 생각입니다. 그러나 단지 작성하고 텍스트 파일에 읽기의 간단한 부분은 더 복잡하다 읽을

39:  filename = "clear.txt"; 
40: 
41:  // Password must be at least 8 characters (bytes) long 
42: 
43:  String password = "super_secret"; 
44: 
46:  outFile = new FileOutputStream(filename); 
80:  outFile.write(password); 

및이 방법을 수행 할 수 있지만 내가 그것을

private static String readFileAsString(String filePath) throws java.io.IOException{ 
    byte[] buffer = new byte[(int) new File(filePath).length()]; 
    BufferedInputStream f = null; 
    try { 
     f = new BufferedInputStream(new FileInputStream(filePath)); 
     f.read(buffer); 
    } finally { 
     if (f != null) try { f.close(); } catch (IOException ignored) { } 
    } 
    return new String(buffer); 
} 

기본적으로 바이트 설명하려고합니다 [ ]는 배열 (google 그것 당신이 무엇인지 모르겠다면) 원시 1과 0입니다. 그것은 파일의 모든 1과 0을 배열에 넣습니다. 즉, 파일 ie (int) new File (filePath) .length()와 같은 길이입니다. 그런 다음 fileinputstream은이 멋진 1과 0 텍스트로. BufferedinputStream은 fileinputstream에 대한 효율적인 래퍼입니다. 왜냐하면 한 번에 많은 바이트를 읽은 다음 동시에 모든 것을 변환하기 때문입니다 (따라서 버퍼에 이름을 저장합니다). 한 번에 1 바이트를 읽거나 변환하는 속도가 느립니다. 비효율적입니다 (FileInputStream 자체). 예외는 google로 보내고 싶지만 기본적으로 파일을 찾을 수 없거나 파일을 읽거나 쓸 수있는 권한이 없으면 프로그램이 중단되지 않습니다.

+0

나는 그것을 보았다. 그리고 그것은 매우 복잡해 보인다, 나는 이것이 내가 어디에 있는지에 관해서,이 점에서 더 앞당겨 졌다고 생각한다. 귀하의 답변을 주셔서 감사 드리며, 나는 여전히이 코드를 연구 할 것이고 바이트와 같은 이전에 보지 못한 이러한 용어를 연구 할 것입니다. [], 주 메소드는 예외를 던집니까? 나는 전에 그것을 본 적이 없다. – Gavin

+1

-1 : 암호 기반 암호화는 OP가 요구하는 것과 아무 관련이 없으며 IO 코드에 버그가 가득합니다. –

+0

예, JB Nizet이 말했듯이, 암호 해독기를 원하지 않습니다. 주로 이것은 나의 연습용 일 뿐이므로 공개가 아니기 때문에 ... 누군가가 나를 도와 줄 수 있습니까? – Gavin