So, in the following code I am trying to let the objects "reader" and "writer" be recognized by some of my methods, so I later will be able to run them at the same time (I'm thinking like using threads). So that's basically my question, is there a way I can get the "reader" and "writer" objects to be recognized in my other methods?
package com.Kaelinator; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.time.LocalDateTime; import java.time.temporal.ChronoField; public class ServerManager2 { static boolean Running = false; //static String command = "C:/Users/Kael/Desktop/minecraftserver/RUN.bat"; static String command = "C:/Users/Owner/Desktop/rekt/Run.bat"; static String shutDown = "C:/Windows/System32/shutdown.exe -r -t 0"; public static void main(String[] args) throws IOException { runServer(); while (Running) { chatChecker(); } Commands(); } public static void chatChecker() { LocalDateTime now = LocalDateTime.now(); int hour = now.get(ChronoField.HOUR_OF_DAY); int minute = now.get(ChronoField.MINUTE_OF_HOUR); int second = now.get(ChronoField.SECOND_OF_MINUTE); String hourSyntax = Integer.toString(hour); String minuteSyntax = Integer.toString(minute); String secondSyntax = Integer.toString(second); String chatChecker = "[" + hourSyntax + ":" + minuteSyntax + ":" + secondSyntax + "] [Server thread/INFO]: "; System.out.println(chatChecker); } public static void sleepThread(long time) { try { Thread.sleep(time * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } public static void runServer() throws IOException { Process process = Runtime.getRuntime().exec(command); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream())); process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); } public static void readOutput() { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } public static void Commands() throws IOException { Running = true; try { sleepThread(3); writer.append("say SERVER STARTED"); writer.newLine(); writer.flush(); sleepThread(14100); writer.append("say restarting in 5 minutes"); writer.newLine(); writer.flush(); sleepThread(60); writer.append("say restarting in 4 minutes"); writer.newLine(); writer.flush(); sleepThread(60); writer.append("say restarting in 3 minutes"); writer.newLine(); writer.flush(); sleepThread(60); writer.append("say restarting in 2 minutes"); writer.newLine(); writer.flush(); sleepThread(60); writer.append("say restarting in 1 minutes"); writer.newLine(); writer.flush(); sleepThread(30); writer.append("say restarting in 30 seconds"); writer.newLine(); writer.flush(); sleepThread(20); writer.append("say restarting in 10 seconds"); writer.newLine(); writer.flush(); sleepThread(5); writer.append("say restarting in 5 seconds"); writer.newLine(); writer.flush(); sleepThread(1); writer.append("say restarting in 4 seconds"); writer.newLine(); writer.flush(); sleepThread(1); writer.append("say restarting in 3 seconds"); writer.newLine(); writer.flush(); sleepThread(1); writer.append("say restarting in 2 seconds"); writer.newLine(); writer.flush(); sleepThread(1); writer.append("say restarting in 1 second"); writer.newLine(); writer.flush(); writer.append("stop"); writer.close(); } catch (IOException e) { e.printStackTrace(); } } }
While this is not a recommended Object Oriented practice, one way to do what you want would be to set reader
and writer
as static
fields, just like your Running
field.
EDIT:
The following code compiles and runs. I added two static fields and added a missing throws
on a method.
package com.Kaelinator;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
public class ServerManager2 {
static BufferedWriter writer;
static BufferedReader reader;
static boolean Running = false;
//static String command = "C:/Users/Kael/Desktop/minecraftserver/RUN.bat";
static String command = "C:/Users/Owner/Desktop/rekt/Run.bat";
static String shutDown = "C:/Windows/System32/shutdown.exe -r -t 0";
public static void main(String[] args) throws IOException {
runServer();
while (Running) {
chatChecker();
}
Commands();
}
public static void chatChecker() {
LocalDateTime now = LocalDateTime.now();
int hour = now.get(ChronoField.HOUR_OF_DAY);
int minute = now.get(ChronoField.MINUTE_OF_HOUR);
int second = now.get(ChronoField.SECOND_OF_MINUTE);
String hourSyntax = Integer.toString(hour);
String minuteSyntax = Integer.toString(minute);
String secondSyntax = Integer.toString(second);
String chatChecker = "[" + hourSyntax + ":" + minuteSyntax + ":" + secondSyntax +
"] [Server thread/INFO]: ";
System.out.println(chatChecker);
}
public static void sleepThread(long time) {
try {
Thread.sleep(time * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void runServer() throws IOException {
Process process = Runtime.getRuntime().exec(command);
writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
process.getInputStream();
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
}
public static void readOutput() throws IOException {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
public static void Commands() throws IOException {
Running = true;
try {
sleepThread(3);
writer.append("say SERVER STARTED");
writer.newLine();
writer.flush();
sleepThread(14100);
writer.append("say restarting in 5 minutes");
writer.newLine();
writer.flush();
sleepThread(60);
writer.append("say restarting in 4 minutes");
writer.newLine();
writer.flush();
sleepThread(60);
writer.append("say restarting in 3 minutes");
writer.newLine();
writer.flush();
sleepThread(60);
writer.append("say restarting in 2 minutes");
writer.newLine();
writer.flush();
sleepThread(60);
writer.append("say restarting in 1 minutes");
writer.newLine();
writer.flush();
sleepThread(30);
writer.append("say restarting in 30 seconds");
writer.newLine();
writer.flush();
sleepThread(20);
writer.append("say restarting in 10 seconds");
writer.newLine();
writer.flush();
sleepThread(5);
writer.append("say restarting in 5 seconds");
writer.newLine();
writer.flush();
sleepThread(1);
writer.append("say restarting in 4 seconds");
writer.newLine();
writer.flush();
sleepThread(1);
writer.append("say restarting in 3 seconds");
writer.newLine();
writer.flush();
sleepThread(1);
writer.append("say restarting in 2 seconds");
writer.newLine();
writer.flush();
sleepThread(1);
writer.append("say restarting in 1 second");
writer.newLine();
writer.flush();
writer.append("stop");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.