ユーザーが文字列をコマンドラインに入力できるようにするスレッドを作成しました。これは、新しい行で、user_input.txt というファイルに保存する必要があります。
メインスレッドで動作させることができましたが、スレッド内で動作させる必要があります。
Thread オブジェクトのコードは次のとおりです。
//Importing
//Input
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
//File writing
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class FileInputThread implements Runnable
{
public void run() {
System.out.println("FileInputThread running");
//Creating Instances of InputStreamReader and BufferedReader
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader keyboardInput = new BufferedReader(input);
//Finding/Creating File
File file = new File("/Users/jakecarr/Documents/University/Year 2/Semester 1" +
"/ECM2414 Software Development/Workshop 3/user_input.txt");
try {
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
//Creating instances of FileWriter and BufferedWriter
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
//Creating Date object
Date date;
//Output
System.out.println("Type what you want to write to file");
System.out.println("Please type 'ESC' to exit");
while (true) {
System.out.println("Inside While loop");
String string = keyboardInput.readLine();
//Checks if user types in ESC to stop program
if (string.equals("ESC")) {
System.out.println("You are finished");
break;
}
//Writing the input to the file
bw.write(string);
bw.newLine();
//Flushes strings on buffered reader to the hard drive
bw.flush();
}
System.out.println("Writing to file complete");
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
現在、すべての println メソッドを実行しているようですが、keyboardInput.readLine(); に関しては、コマンド ラインで何も入力することはできません。そして、それはそれが行き詰まっているように見えるところです!
どんな助けにも感謝します!
ありがとうございました。