From: jason on
hello,

any assistance would be largely appreciated.

File FileChecker=new File("/Users/Jason/
Desktop/ad_log.txt");

if (!FileChecker.exists()){
FileChecker.createNewFile();
}else{

//build existing records.
//Existing_Records=
getContents(FileChecker);

} //here i check if
the file exists. if it doesn't i make a new one. otherwise i want to
read my old one, using getContents.



//getContents:

static public void getContents(File args) throws Exception{

String[] TempLine;

Scanner freader = new Scanner(args);
//BufferedWriter writer = new BufferedWriter(new
FileWriter(toFile));

//... Loop as long as there are input lines.
String line = null;
while (freader.hasNextLine()) {
line = freader.nextLine();
System.out.println(line);

}

//... Close reader and writer.
freader.close(); // Close to unlock.
// Close to unlock and flush to disk.
}


for some reason that i cannot figure out this is returning null.
the file is definitely not null and contains very long strings.
the strings contain new line by using:
System.out.println("what i write to my file");


any help would be largely appreciated!
From: Lew on
jason wrote:
> File FileChecker=new File("/Users/Jason/
> Desktop/ad_log.txt");

Please use much milder indentation for readability. Four spaces is about the
maximum per indent level for Usenet.

The Java coding convention calls for variables (other than constants) to be
spelled in camel case (a form of mixed case) with the first letter lower case.

I understand you to say that the file already exists, and contains data. (It
doesn't really make sense in Java terms to refer to a file as being 'null';
variables can be 'null'.)

> if (!FileChecker.exists()){
> FileChecker.createNewFile();
> }else{
>
> //build existing records.
> //Existing_Records=
> getContents(FileChecker);
>
> }
> //here i [sic] check if the file exists. if it doesn't i [sic] make a new one.
> otherwise i [sic] want to read my old one, using getContents.
>
> //getContents:
>
> static public void getContents(File args) throws Exception{
>
> String[] TempLine;
>
> Scanner freader = new Scanner(args);
> //BufferedWriter writer = new BufferedWriter(new
> FileWriter(toFile));
>
> //... Loop as long as there are input lines.
> String line = null;
> while (freader.hasNextLine()) {
> line = freader.nextLine();
> System.out.println(line);
>
> }
>
> //... Close reader and writer.
> freader.close(); // Close to unlock.
> // Close to unlock and flush to disk.

There's nothing to "flush to disk" from an input.

> }
>
>
> for some reason that i [sic] cannot figure out this is returning null.
> the file is definitely not null and contains very long strings.
> the strings contain new line by using:
> System.out.println("what i write to my file");

What exactly do you mean by "returning null"? There is no 'return' of any
value in the code that you show.

If you mean to say that you see no visible output, it is possible that
'System.out' is not flushed or there is some other problem with getting the
output visible to you. The business about "returning null" is certainly a red
herring.

This is extremely difficult to answer with the inaccurate terminology and lack
of an SSCCE (Simple, Self-Contained Compilable Example).
<http://sscce.org/>

You should show both the writes to the file and the attempt to read it.

--
Lew
From: markspace on
jason wrote:
> hello,
>
> any assistance would be largely appreciated.
>
> File FileChecker=new File("/Users/Jason/
> Desktop/ad_log.txt");


This works for me:


package test;

import java.io.File;
import java.util.Scanner;

public class FileTest {

public static void main( String[] args )
throws Exception
{
System.out.println( new File(".").getAbsolutePath() );
for( String s : args ) {
getContents( new File(s) );
}
getContents( new File( "src/test/FileTest.java" ) );
}

private static void getContents( File f )
throws Exception
{
Scanner scanner = new Scanner( f );
while( scanner.hasNextLine() ) {
System.out.println( scanner.nextLine() );
}
}
}
From: jason on
On May 2, 6:42 pm, markspace <nos...(a)nowhere.com> wrote:
> jason wrote:
> > hello,
>
> > any assistance would be largely appreciated.
>
> >                         File FileChecker=new File("/Users/Jason/
> > Desktop/ad_log.txt");
>
> This works for me:
>
> package test;
>
> import java.io.File;
> import java.util.Scanner;
>
> public class FileTest {
>
>      public static void main( String[] args )
>              throws Exception
>      {
>          System.out.println( new File(".").getAbsolutePath() );
>          for( String s : args ) {
>              getContents( new File(s) );
>          }
>          getContents( new File( "src/test/FileTest.java" ) );
>      }
>
>      private static void getContents( File f )
>              throws Exception
>      {
>          Scanner scanner = new Scanner( f );
>          while( scanner.hasNextLine() ) {
>              System.out.println( scanner.nextLine() );
>          }
>      }
>
>
>
> }

markspace,
thank you for responding. i've realized a bit why my issue is so
annoying.

i am using the java desktop application developer in NetBeans.

When I use the following program:

[CODE]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package readtextfileexample;

/**
*
* @author amandaabdou
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;


public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String A;
A=FileReader("/Users/"+System.getProperty("user.name")+"/
Desktop/ad_log.txt");
System.out.println(A);
}

public static String FileReader(String args){
File file = new File(args);
StringBuffer contents = new StringBuffer();
BufferedReader reader = null;
String For_Output="";
try
{
reader = new BufferedReader(new FileReader(file));
String text = null;

// repeat until all lines is read
while ((text = reader.readLine()) != null)
{
contents.append(text)
.append(System.getProperty(
"line.separator"));
For_Output+=text;
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
if (reader != null)
{
reader.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
}

// show file contents here

return For_Output;
}

}
[/CODE]

in a java application in netbeans, it runs perfectly and does exactly
what i want.

if i attempt to migrate the method of FileReader to my basic desktop
application it no longer works.
this desktop application is using the exact same library imports and
is using identical code aside from one aspect. my FileReader method is
now called:
[CODE]
private String FileReader(String args)
[/CODE]


when calling in this context i do not get anyone of my indicating
System prints to execute,
ie:
System.out.println("Made it to line 101"); //etc

is there a larger underlying issue i am missing?
this is my first desktop application, but i do not see why there
should be such a discrepancy.

you are correct, the code does work, both proposed by you and as noted
just now by me.

unfortunately when i migrate this code to my desktop application it
fails to read the file.


any assistance would be largely appreciated.
From: markspace on
jason wrote:

> if i attempt to migrate the method of FileReader to my basic desktop
> application it no longer works.


Well, I can't tell you what the problem is with the program, if you
don't show it to me. All I can say is I agree the program you posted
works. The program you didn't post ... shrug, I don't know.


> this desktop application


Ugh, you meant the NetBeans project type "Java Desktop Application?"

Don't use that, I don't think that JSR ever really went anywhere. It's
being maintained by one guy at Kenai now who seems to have no resources
or customers. Notice that their front page basically refers you to the
NetBeans Platform (different than the IDE) for an application framework.

https://appframework.dev.java.net/

Use the regular old "Java Application" instead, and just make regular
old Swing objects. It works fine, everybody does it. JSR 296 is, imo,
dead.