您好我遇到了一个非常烦人的问题 我想阅读与此类似的文本文件
KEY
0 1 2 3 4 5 6 7
KEYEND
我试图使用scanner类,因为它可以将结果返回为字符串,小数,等等
public static void LoadStuff(String Name) {
Scanner reader = null;
try {
reader = new Scanner(new File(Name));
} catch (Exception e) {
Log.d("damn", "FAIL");
}
if(reader != null)
Load(reader);
}
private static void Load(Scanner reader) {
while (reader.hasNext()) {
String result = reader.next();
if (result == "KEY") { // may be result.equalsignorecase
while (result != "KEYEND") {
int index = reader.nextInt();
Log.d("Index", String.valueOf(index));
}
}
}
reader.close();
}
我不能在上面做,导致扫描仪无法找到文件,解析像“file.txt”不起作用,尝试也与路径
像这样“res / data / file.txt”也不起作用
我应该把文件放在哪里以及如何获取目录以使其工作
感谢
答案 0 :(得分:5)
此代码使用您班级的getAssets()
方法。您需要将文本文件放在Android项目的assets文件夹中。 getAssets
方法返回AssetManager对象。 open(String.format("filename.txt"))
方法返回一个InputStream。 InputStream是DataInputStream的参数。然后使用它作为扫描仪的输入。
try {
DataInputStream textFileStream = new DataInputStream(getAssets().open(String.format("filename.txt")));
Scanner sc = new Scanner(textFileStream);
while (sc.hasNextLine()) {
String aLine = sc.nextLine();
System.out.println(aLine);
}
sc.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
我一直用来访问当前项目(也是文本文件)中的文件的代码是:
textFileStream = new DataInputStream(getAssets().open(String.format("myFile.txt")));
您始终可以使用自己的填充字符串填充String.format部分。
关键一直是
getAssets()
一部分。
因此,在您的情况下,您可能会看到如下内容:
reader = new Scanner(new File(getAssets().open(String.format("myFile.txt"))));
OR
reader = new Scanner(new File(getAssets().open(Name)));
File构造函数可以接受一个InputStream,getAssets()。open将返回一个InputStream。
答案 2 :(得分:0)
将您的文本文件放在assets
文件夹中,然后使用getAssets().open("file.txt")
阅读。
答案 3 :(得分:0)
尝试提供这样的路径"/sdcard/file.txt"
在比较对象时,请始终“equals
”。 Never use "==" or "!=" with Objects. (String is an object too in Java)
例如:
if (result.equals("KEY"))` { // equals is used
`while (!(result.equals("KEYEND")))` { // !equals is used
int index = reader.nextInt();
Log.d("Index", String.valueOf(index));
}
}
答案 4 :(得分:0)
要将文件写入内部存储,请使用openFileOutput
。根据Android Data Storage doc:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
使用Scanner读取文件:
File f = new File( getFilesDir(), FILENAME );
Scanner s = new Scanner( f );
注意:getFilesDir()返回文件系统上目录的绝对路径,其中存储了使用openFileOutput(String,int)创建的文件。
要查看您输出到文件的内容,请查看:is it possible to see application data from adb shell the same way I see it mounting SD card?。
答案 5 :(得分:0)
您可以执行以下操作:
File data = new File("yourfile");
Scanner sc = new Scanner(data);
int i = 0;
while(sc.hasNextLine){
String Lines = sc.nextLine;
System.out.println(Lines);
i++;
}