我想知道如何最好地将“可访问”或“可见”一组在我的主例程中定义的文件I / O流构造函数转换为子例程。
我发现我不能使用“public”,编译器发出“非法表达”错误信息。
当我将文件I / O流和通道构造函数放置在为其定义的公共类中时 整个程序“包”。编译器发出一个错误,指出没有声明FileNotFound或IOException处理,所以我在主线例程中加入以下内容:
public static void main(String args[]) throws FileNotFoundException, IOException
{
// and if I then place the File I/O contructors after this:
//Connect to the LU62XC Message File
FileOutputStream MesgOut = new FileOutputStream(Mesg_File) ;
FileChannel MesgChnl = MesgOut.getChannel() ;
ByteBuffer Mesg_Bufr = ByteBuffer.allocate(128) ;
//Connect to the Request Input File
FileInputStream RqstInp = new FileInputStream(Rqst_File) ;
//Connect to the Response Output File
FileOutputStream RespOut = new FileOutputStream(Resp_File) ;
//Connect to the Request/Response Log File
FileOutputStream LogrOut = new FileOutputStream(Logr_File) ;
我解决了“无异常处理错误”,但现在我的问题是子例程 那引用“构造”的文件对象本质上不能..我得到了一堆 “找不到符号”错误消息。同样,如果我将“public”放在文件I / O构造函数的前面,我会收到Illegal表达式消息。
有没有办法解决这个问题?
为什么java编译器坚持程序处理文件未找到的错误超出了我的范围。
我的意思是已经存在if file_object.exists()
方法......
如果文件不在那里......操作系统会通知你。所有任何应用程序(OOP或其他)在涉及任何类型的I / O时都会向底层操作系统发出请求。
答案 0 :(得分:0)
如果您希望方法使用您拥有的对象作为局部变量,则可以将其作为参数传递。这是我能想到的几乎所有语言的标准做法。但是,不是传递FileInputStream,最好在camelCase中传递文件名
// in main
process(requestFile, responseFile, logFile);
// later
public static void process(String requestFile, String responseFile, String logFile) throw IOException {
//Connect to the Request Input File
FileInputStream requestIn = new FileInputStream(requestFile);
//Connect to the Response Output File
FileOutputStream responseOut = new FileOutputStream(responseFile);
//Connect to the Request/Response Log File
FileOutputStream logOut = new FileOutputStream(logFile);
requestIn.close();
responseOut.close();
logOut.close();
}
我收到一堆“找不到符号”的错误消息。
因为局部变量是范围的局部变量,即它所在的方法。你不能在另一种方法中使用它。
同样,如果我将“public”放在文件I / O构造函数的前面,我会收到Illegal表达式消息。
由于无法在方法中定义公共字段,因此必须在方法外定义它们,通常在类的开头。
有没有办法解决这个问题?
阅读一些教程http://www.google.com/search?q=java+turorials 1100万个结果,或工作示例http://www.google.com/search?q=java+examples 2500万个结果
为什么java编译器坚持程序处理文件未找到的错误超出了我的范围。我的意思是已经有了if file_object.exists()方法......如果文件不在那里......操作系统会让你知道。
它通过抛出FileNotFoundException让你知道。你期望它做什么?
所有任何应用程序(OOP或其他)在涉及任何类型的I / O时都会向底层操作系统发出请求。
操作系统可以返回您需要能够处理的错误。
答案 1 :(得分:0)
这是基本的Java:你必须传递引用需要它们的方法,或者将它们创建为实例变量并实例化一个类。
我建议您阅读“使用入门”教程:http://download.oracle.com/javase/tutorial/java/index.html