我遇到Android问题。我想打开文件,检查它,然后返回一个简单的值。
public void setMessageCode(String code){
try {
messageCode = setMsg(code);
} catch (IOException e) {
e.printStackTrace();
}
}
public String setMsg(String messageCode) throws IOException{
String FILE = "src/dialogs.txt", msg;
BufferedReader in = new BufferedReader(new FileReader(FILE)); //IO Exception here
msg = in.readLine();
while(msg!=null){
message = msg.split(",");
for(int i=0; i<message.length; i++)
if(message[i].equals(messageCode)){
in.close();
return message[i++];
}
msg = in.readLine();
}
in.close();
return "Nothing to get";
}
所以Eclipse没有看到问题并且工作完美。 ADT失败了。 Dialogs.txt在src / ...中,我检查了这个数百万次。怎么办?
答案 0 :(得分:1)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
String first_line = read_file("dialogs.txt");
System.out.print(first_line);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public String read_file(String filename) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
getAssets().open(filename)));
int i=0;
String line = reader.readLine();
while (line != null) {
if(++i==1)
return line;//only read the first line
line = reader.readLine();
}
reader.close();
return "Nothing to get";
}
}
答案 1 :(得分:0)
您可以在运行项目时打开文件系统窗体&gt;查看并导航到安装路径以查看是否有该文件。
如果您想从中读取文件而不需要更改它,请使用资产。你想要写入你的文件,然后你需要将它保存在你的设备上,它还要求你拥有适当的权限,可以在你的SD卡手机上读写。
在使用之前,请检查您的设备上是否存在该文件。
答案 2 :(得分:0)
好。我处理了这个问题。我通过使用getAssets(“fileName”)从活动传递文件的本地化,而不是在我的类中使用它在InputStreamReader中。现在它看起来像这样。
public void setMessageCode(InputStream location, String code){
try {
messagee = setMsg(location, code);
} catch (IOException e) {
e.printStackTrace();
}
}
public String setMsg(InputStream location, String messageCode) throws IOException{
String FILE = "assets/a.txt", msg;
BufferedReader in = new BufferedReader(new InputStreamReader(location));
msg = in.readLine();
while(msg!=null){
message = msg.split(",");
for(int i=0; i<message.length; i++)
if(message[i].equals(messageCode)){
in.close();
return message[i+1];
}
msg = in.readLine();
}
in.close();
return "Nothing to get";
}