Reputation: 25
All seems to be in order, but somehow it isn't. Here is the code;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
String csvFilename = "src/example.csv";
CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
String[] row = null;
String total = "";
while((row = csvReader.readNext()) != null) {
for( int i = 0 ; i < 200 ; i++ ){ // no higher than num of columns to be found or error
String saveAway = row[i];
//tabl[saveInThisRow][i] = row[i];
tabl[saveInThisRow][i] = saveAway.replace('_', ' ');
}
saveInThisRow++;
if(saveInThisRow == 50) { saveInThisRow = 0; break; }
}
//saveInThisRow = 0;
// ctrl-i = auto format
csvReader.close();
The path is as far as I can tell correct (its in the src), maybe there is is something wrong with the csv instead? It worked nicely in Eclipse, but now in Intellij its broken... whats going on here?
This is the stack trace;
java.io.FileNotFoundException: src\example.csv (The system cannot find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at net.klingt.example.LoadCsv.readCsv(LoadCsv.java:61)
at net.klingt.example.ProcessingExample.draw(ProcessingExample.java:252)
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:745)
Now I have this;
public void readCsv( ) throws IOException, URISyntaxException { // throws IOException --- String[] args
System.out.println(".............");
System.out.println(System.getProperty("user.dir"));
val = 20; // testing purposes
String [][] tab = new String [100][400];
int saveInThisRow = 0;
File file = new File(getClass().getResource("src/resources/GEMSTONES05.csv").toURI());
String csvFilename = "src/resources/GEMSTONES05.csv";
CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
String[] row = null;
String total = "";
while((row = csvReader.readNext()) != null) {
for( int i = 0 ; i < 20 ; i++ ){ // no higher than num of columns to be found or error
String saveAway = row[i];
parent.println("CVS read " + saveAway);
//tabl[saveInThisRow][i] = row[i];
tabl[saveInThisRow][i] = saveAway.replace('_', ' ');
}
saveInThisRow++;
if(saveInThisRow == 20) { saveInThisRow = 0; break; }
}
csvReader.close();
for( int i = 0 ; i < 300 ; i++){
}
}
I am a bit lost how & where to use "file", here is the stack trace
C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.0.3\jre\jre\bin
Exception in thread "Animation Thread" java.lang.NullPointerException
at net.klingt.example.LoadCsv.readCsv(LoadCsv.java:41)
at net.klingt.example.ProcessingExample.draw(ProcessingExample.java:253)
at processing.core.PApplet.handleDraw(PApplet.java:2386)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
at processing.core.PApplet.run(PApplet.java:2256)
at java.lang.Thread.run(Thread.java:745)
I no longer have the file not found error, instead now its an null pointer exception....
Upvotes: 2
Views: 9786
Reputation: 5950
try with this
File file = new File(getClass().getResource("/example.csv").toURI());
it gets the file from src
folder of your project
and make sure that example.csv
is present in src
folder.
change you readCSV() method to the following..
public void readCsv( ) throws IOException, URISyntaxException { // throws IOException --- String[] args
System.out.println(".............");
System.out.println(System.getProperty("user.dir"));
val = 20; // testing purposes
String [][] tab = new String [100][400];
int saveInThisRow = 0;
File file = new File(getClass().getResource("/resources/GEMSTONES05.csv").toURI());
//String csvFilename = "/resources/GEMSTONES05.csv";
CSVReader csvReader = new CSVReader(new FileReader(file));
String[] row = null;
String total = "";
while((row = csvReader.readNext()) != null) {
for( int i = 0 ; i < 20 ; i++ ){ // no higher than num of columns to be found or error
String saveAway = row[i];
parent.println("CVS read " + saveAway);
//tabl[saveInThisRow][i] = row[i];
tabl[saveInThisRow][i] = saveAway.replace('_', ' ');
}
saveInThisRow++;
if(saveInThisRow == 20) { saveInThisRow = 0; break; }
}
csvReader.close();
for( int i = 0 ; i < 300 ; i++){
}
}
while getting the Resource, you don't have to write the src
folder name.. Because at runtime, jvm will get the resources from src
folder and look for the next path.
Upvotes: 4
Reputation: 392
"src/example.csv" is a relative path, try absolute path, like c:/work/src/example.csv.
FileNotFoundException
means file can't be found, often happens when you misuse relative path. you can print System.getProperty("user.dir")
to see current directory of the process, then use correct relative path.
Upvotes: 0