获取 java 中文本文件的内容?
Get contents of text file in java?
我有一个简单的问题。
我在java中写了一个方法来获取文本文件的内容。
public static String[] viewSuppliers()
{
Scanner x = null;
try{
x = new Scanner(new File("C:\Users\فاطمة\Downloads\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
return array;
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
我在主程序中调用了这个方法,但它只是 return 文件的一行。我的文本文件的内容是这样的:
PEPSI John London 214222
COLA Sarah France 478800
这是我的主程序:
String array3[] = {"Supplier Company: ", "Supplier Name: ", "Supplier Address: ",
"Supplier Phone Number: "};
String array4[] = i.viewSuppliers(); // object of class
if(i.viewSuppliers() == null)
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
}
当我 运行 主程序并调用方法时,它只是 return 第一行,我想 return 所有文件。
尝试将 return 移出 while 循环,否则在第一次迭代后它会 returns。
而不是 returning 一个包含 4 个字符串的数组,
看来您真正想要的是 return 4 个字符串的数组列表:
public static List<String[]> viewSuppliers()
{
List<String[]> lines = new ArrayList<>();
Scanner x = null;
try{
x = new Scanner(new File("C:\Users\فاطمة\Downloads\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
lines.add(array);
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return lines;
}
然后,迭代结果:
List<String[]> list = i.viewSuppliers(); // object of class
if (list.isEmpty())
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for (String[] supplier : list) {
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(supplier[u]);
}
}
}
您的循环输出基于 array3 的长度,而不是 array4,因此由于 array3 的长度,它总是只打印第一个供应商。
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
也许根据第一个循环下方的长度将 System.out.println(array4) 添加到循环中。
我有一个简单的问题。 我在java中写了一个方法来获取文本文件的内容。
public static String[] viewSuppliers()
{
Scanner x = null;
try{
x = new Scanner(new File("C:\Users\فاطمة\Downloads\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
return array;
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
我在主程序中调用了这个方法,但它只是 return 文件的一行。我的文本文件的内容是这样的:
PEPSI John London 214222
COLA Sarah France 478800
这是我的主程序:
String array3[] = {"Supplier Company: ", "Supplier Name: ", "Supplier Address: ",
"Supplier Phone Number: "};
String array4[] = i.viewSuppliers(); // object of class
if(i.viewSuppliers() == null)
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
}
当我 运行 主程序并调用方法时,它只是 return 第一行,我想 return 所有文件。
尝试将 return 移出 while 循环,否则在第一次迭代后它会 returns。
而不是 returning 一个包含 4 个字符串的数组, 看来您真正想要的是 return 4 个字符串的数组列表:
public static List<String[]> viewSuppliers()
{
List<String[]> lines = new ArrayList<>();
Scanner x = null;
try{
x = new Scanner(new File("C:\Users\فاطمة\Downloads\suppliers.txt"));
while(x.hasNext())
{
String a = x.next();
String b = x.next();
String c = x.next();
String d = x.next();
String array[] = {a,b,c,d};
lines.add(array);
}
x.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return lines;
}
然后,迭代结果:
List<String[]> list = i.viewSuppliers(); // object of class
if (list.isEmpty())
System.out.println("No current suppliers.");
else
{
System.out.println("Current Suppliers: ");
for (String[] supplier : list) {
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(supplier[u]);
}
}
}
您的循环输出基于 array3 的长度,而不是 array4,因此由于 array3 的长度,它总是只打印第一个供应商。
System.out.println("Current Suppliers: ");
for(int u = 0; u < array3.length; u++)
{
System.out.printf(array3[u]);
System.out.println(array4[u]);
}
也许根据第一个循环下方的长度将 System.out.println(array4) 添加到循环中。