2015-09-23 2 views
1

Я не уверен, как сохранить содержимое файла в строке после его чтения.Хранить содержимое файла в строковой переменной java

Мне уже удалось прочитать содержимое файла .txt и распечатать его содержимое, но я не уверен, как хранить это содержимое, поскольку оно относится к переменной String в java.

пример .txt содержания: RANDOMSTRING

кода надрез у меня есть, что читает содержимое текстового файла, но не сохраняет его в «ключ» переменный:

{ 
    FileReader file = new FileReader("C:/Users/John/Documents/key.txt"); 
    BufferedReader reader = new BufferedReader(file); 

    String key = ""; 
    String line = reader.readLine(); 

    while (line != null) { 
     key += line; 
     line = reader.readLine(); 
    } 

    System.out.println(key); //this prints contents of .txt file 
} 

// String key = " "; //should be able to reference the key and message here 
// String message = "THIS IS A SECRET MESSAGE!"; // another string that is stored 

//encrypt is a method call that uses the stored strings of "message" and "key" 
String encryptedMsg = encrypt(message, key); 
+1

_but не хранит его в переменной «ключ» _ Что заставляет вас так думать? –

+0

Как сказал в своем ответе на Hovercraft Full Eels, стиль кода и форматирование очень важны. Я переформатировал код в вашем вопросе для вас (будет видно после его рассмотрения), но, пожалуйста, сделайте это в следующий раз. Если вы хотите, чтобы другие оплачивали свое время, чтобы помочь вам, вы должны заплатить свое время, чтобы задать хороший вопрос, так что другим легче помочь вам. –

+0

Ключ обычно не состоит из текста. Если это ключ к классическому шифру, то он обычно не охватывает несколько строк. –

ответ

2

Он хранит данные вставить в ключевую переменную (если ваш код чтения файлов работает правильно - и это легко проверить). Никакая ваша реальная проблема не является одной из переменных областей. Ключевая переменная объявляется в блоке с фигурной фигурной скобкой в ​​верхней части блока кода и не отображается там, где вы пытаетесь ее использовать. Попробуйте объявить ключевую переменную до блок кода, который вы указали, или используйте его как поле в своем классе.

// here is some block of code: 
{ 
    FileReader file = new FileReader("C:/Users/John/Documents/key.txt"); 
    BufferedReader reader = new BufferedReader(file); 

    // **** key is declared here in this block of code 
    String key = ""; 
    String line = reader.readLine(); 

    while (line != null) { 
     key += line; 
     line = reader.readLine(); 
    } 
    System.out.println(key); // so key works 
} 

// but here, the key variable is not visible as it is **out of scope** 
String encryptedMsg = encrypt(message, key); 

Решение:

// declare key *** here*** 
String key = ""; 


{ 
    FileReader file = new FileReader("C:/Users/John/Documents/key.txt"); 
    BufferedReader reader = new BufferedReader(file); 

    // don't declare it here 
    // String key = ""; 
    String line = reader.readLine(); 

    while (line != null) { 
     key += line; 
     line = reader.readLine(); 
    } 
    System.out.println(key); // so key works 
} 

// but here, the key variable is in fact visible as it is now **within scope** 
String encryptedMsg = encrypt(message, key); 

Ваша Другая проблема заключается в том, что ваш код форматирования страшно, и это частично отвечает за вышеуказанной проблемы. Если вы хорошо отформатируете свой код, в том числе с использованием согласованного стиля отступов, чтобы код выглядел единообразным и последовательным, вы бы точно указали, в каком блоке объявлена ​​ключевая переменная, и становится очевидным, что он не будет виден там, где вам это нужно. Обычно я избегаю использования вкладок для отступов (частое программное обеспечение форума не очень хорошо работает с вкладками) и отступы каждого блока кода 4 пробела. Код, находящийся в том же блоке, должен иметь одинаковый отступ.

+0

Спасибо за совет. Я буду помнить об этом. Я не знал, что область действия переменной была причиной этой проблемы. Я предполагаю, что это означает, что я сделал бы то же самое, если бы я импортировал более одного текстового файла? например message.txt? –

Смежные вопросы