I have some problems reading file in java:
my file is for example:
3,4
2
6
4
1
7
3
8
9
where first line 3 and 4 are the lenght of array A and B and then the element of each array.
I made this
import java.io.*;
import java.util.Arrays;
public class Progetto {
public static void main(String args[])
{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("prova.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = br.readLine(); // step 1
if (strLine != null) {
String[] delims = strLine.split(","); // step 2
// step 3
int[] a = new int[Integer.parseInt(delims[0])];
int[] b = new int[Integer.parseInt(delims[1])];
// step 4
for (int i=0; i < a.length; i++)
a[i] = Integer.parseInt(br.readLine());
// step 5
for (int i=0; i < b.length; i++)
b[i] = Integer.parseInt(br.readLine());
br.close(); // step 6
// step 7
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
}
But it gives me error:
-Unhandled exception type FileNotFoundException (line 11)
-Unhandled exception type IOException (lines 15 26 30 32)
but i don't know why. Someone can help me.
Thanks in advance
Change the way your main method throws IOException
. Since these operations may cause either FileNotFoundException
or IOException
.
public static void main(String[] args) throws FileNotFoundException {
}
Or add a try-catch
block
try {
FileInputStream fstream = new FileInputStream("prova.txt");
String strLine = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
After all these thing make sure that file is exist.
All you have to do is add try-catch blocks for the unhandled exceptions.
This happens because FileInputStream
throws FileNotFoundException
which is a checked exception You can read here more)
The same issue happens here with
String strLine = br.readLine()
void addRule(String content){
FileOutputStream outStream = null;
try {
outStream = this.openFileOutput("BlockList", Context.MODE_APPEND);
outStream.write(("\n"+content).getBytes());
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
Thank you Ruchira, i made this
import java.io.*;
import java.util.Arrays;
public class Progetto {
public static void main(String args[]) throws IOException {
}
{
try {
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("prova.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = br.readLine(); // step 1
if (strLine != null) {
String[] delims = strLine.split(","); // step 2
// step 3
int[] a = new int[Integer.parseInt(delims[0])];
int[] b = new int[Integer.parseInt(delims[1])];
// step 4
for (int i=0; i < a.length; i++)
a[i] = Integer.parseInt(br.readLine());
// step 5
for (int i=0; i < b.length; i++)
b[i] = Integer.parseInt(br.readLine());
br.close(); }// step 6
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
// step 7
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}
But now at the end i have this error:
a cannot be resolved to a variable
and the same for b.
But i import java.util.Arrays;
Please add throws IOException
after main method's signature
public static void main(String[] args) throws IOException
For your Next Question :
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Progetto {
public static void main(String args[]) throws IOException {
int a[] = null;
int b[] = null;
try {
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("prova.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine = br.readLine(); // step 1
if (strLine != null) {
String[] delims = strLine.split(","); // step 2
// step 3
a = new int[Integer.parseInt(delims[0])];
b = new int[Integer.parseInt(delims[1])];
// step 4
for (int i = 0; i < a.length; i++)
a[i] = Integer.parseInt(br.readLine());
// step 5
for (int i = 0; i < b.length; i++)
b[i] = Integer.parseInt(br.readLine());
br.close();
}// step 6
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}
// step 7
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
}