读取文本行并保存到全局变量

时间:2014-05-06 08:25:02

标签: android

public String serverip;

serverip 是全局字符串变量
我希望我的Socket应用程序从文本文件中读取IP,该文件保存在 Server.txt 文件中。我用过这个:

try {
    FileInputStream instream = new FileInputStream("mnt/sdcard/Server.txt");
    if (instream != null) {
        InputStreamReader inputreader = new InputStreamReader(instream);
        BufferedReader buffreader = new BufferedReader(inputreader);
        serverip = buffreader.readLine();
        instream.close();
    }
} catch (Exception ex) {

}

它可以很好地从文件中读取IP,但不会将IP保存到 serverip 变量。如果我使用像"192.168.1.100"这样的静态字符串,它可以正常工作但是当从文本文件中读取一行时,它不会将该行保存到 serverip

2 个答案:

答案 0 :(得分:0)

首先确保添加:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

如果还是不行,试试这个:

File sdcard = Environment.getExternalStorageDirectory();

//Get the text file
File file = new File(sdcard,"Server.txt");

//Read text from file
StringBuilder text = new StringBuilder();

try {
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line;

    while ((line = br.readLine()) != null) {
        text.append(line);
        text.append('\n');
    }
}
catch (IOException e) {
    //You'll need to add proper error handling here
}

serverip = text;

答案 1 :(得分:0)

我发现从文本文件中读取的字符串就像“192.168.1.100”。注意第一个位置的空字符。虽然文本文件在字符串的开头没有空格或任何其他字符,但它仍然在第一个位置保存结果为空值,所以我使用了subString(1)并将其传递给Socket(ip,port)