Так что это функция, которую я создал.
Как вы можете видеть, это будет считывать файлы, ищущие filename
, а затем читается как --TEMPERATURE UP--
.
Проблема не в каждом filename
имеет --TEMPERATURE UP--
и
Я пытался использовать оператор else, но если я удаляю break
из оператора else, для filename
без --TEMPERATURE UP--
все приложение вылетает
Но если я добавлю оператор break
в оператор else, каждый filename
будет запускать оператор else, который, даже если он содержит --TEMPERATURE UP--
Я также пытался сделать простое выражение else без !line.equals("--TEMPERATURE UP--")
, но оно все равно.
Либо мне нужно добавить break
в другом месте, чтобы запустить код else
, который не будет запускать код if
, ИЛИ я удалить break
, который запускает код if
, но не может запустить else
код, как он будет падать.
Посоветуйте, пожалуйста, как мне изменить код, чтобы при чтении --TEMPERATURE UP--
он запускал код if
, в противном случае - код else
.
Большое спасибо.
public void tempUp() {
SharedPreferences sharedTest = getSharedPreferences("MySharedTest", Context.MODE_PRIVATE);
String filename = sharedTest.getString("filename", " ");
Log.d("File readed: ", filename);
File dir = new File(path);
File[] files = dir.listFiles();
for (File f : files) {
if (f.isFile()) {
BufferedReader inputStream = null;
try {
inputStream = new BufferedReader(new FileReader(f));
String lineToRead = filename;
String CurrentLine;
while ((CurrentLine = inputStream.readLine()) != null) {
if (CurrentLine.equals(lineToRead)) {
try
{
BufferedReader reader = new BufferedReader(new FileReader(f));
String line = reader.readLine();
while(line !=null)
{
line = reader.readLine();
if(line.equals("--TEMPERATURE UP--"))
{
final String ms = reader.readLine();
Log.d("temp up: ", ms);
new Thread(new Runnable()
{
@Override
public void run()
{
String message = "\u000704NTX" + ms + "\r";
byte[] byte_array = message.getBytes();
try
{
SharedPreferences prefx = getSharedPreferences("Device_Data", Context.MODE_PRIVATE);
String device_ip = prefx.getString("local_ip", " ");
String host = device_ip;
Socket socket = new Socket(host, 8070);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.write(byte_array);
out.flush();
}
catch (Exception e)
{
}
}
}).start();
break;
}
else if (!line.equals("--TEMPERATURE UP--"))
{
Toast.makeText(TestScreen.this, "There is no Temperature Display for this profile.", Toast.LENGTH_LONG).show();
break;
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Обновлен:
try
{
BufferedReader reader = new BufferedReader(new FileReader(f));
String line = reader.readLine();
boolean hasTempDisplayProfile = false;
while((line = reader.readLine()) !=null)
{
if(line.equals("--TEMPERATURE UP--")) {
hasTempDisplayProfile = true;
final String ms = reader.readLine();
Log.d("temp up: ", ms);
new Thread(new Runnable() {
@Override
public void run() {
String message = "\u000704NTX" + ms + "\r";
byte[] byte_array = message.getBytes();
try {
SharedPreferences prefx = getSharedPreferences("Device_Data", Context.MODE_PRIVATE);
String device_ip = prefx.getString("local_ip", " ");
String host = device_ip;
Socket socket = new Socket(host, 8070);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.write(byte_array);
out.flush();
} catch (Exception e) {
}
}
}).start();
break;
}
}
if (hasTempDisplayProfile){
Toast.makeText(TestScreen.this, "There is no Temperature Display for this profile.", Toast.LENGTH_LONG).show();
break;
}
}
catch (IOException e)
{
e.printStackTrace();
}