我有一个文本文件,其中包含:
griffin.keyes 108de81c31bf9c622f76876b74e9285f "alphabet soup" zookeeper
rosario.dawson 3e34baa4ee2ff767af8c120a496742b5 "animal doctor" admin
bernie.gorilla a584efafa8f9ea7fe5cf18442f32b07b "secret password" veterinarian
donald.monkey 17b1b7d8a706696ed220bc414f729ad3 "M0nk3y business" zookeeper
jerome.grizzlybear 3adea92111e6307f8f2aae4721e77900 "grizzly1234" veterinarian
bruce.grizzlybear 0d107d09f5bbe40cade3de5c71e9e9b7 "letmein" admin我使用下面的代码将它读入一个二维数组中:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Credentials {
private FileInputStream fileByteStream = null; // File input stream
private Scanner inFS = null; // Scanner object
final private String [][] credArray = new String[6][4];
public String[][] credArray() throws IOException {
int i = 0; // Index variable
int j = 0; // Index variable
// Import credentials data.
fileByteStream = new FileInputStream("credentials.txt");
inFS = new Scanner(fileByteStream);
// Use carriage return and tab as token separators
inFS.useDelimiter("[\\r\\t]");
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}
fileByteStream.close(); //Closes file.
return credArray;
}
}第一行是没有问题地阅读它。行2-6与前面添加了\n的第一个字符串接近。例如:\nrosario.dawson。
我怀疑分隔符有问题,但我不确定还能使用什么。我尝试使用("[\\r\\n\\t]"),但这只是用每行的""抵消了第一行之后的所有内容。我该如何去纠正这个问题呢?
发布于 2016-10-09 05:21:57
我找到了我自己问题的答案。
问题出在这段代码中:
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}我需要纠正将信息从扫描仪inFS读取到数组credArray的方式。我通过将代码更改为:
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next().replaceAll("\\n", "");
}
}这会自动擦除第2-6行的所有新行代码条目。
https://stackoverflow.com/questions/39928351
复制相似问题