如何最好地制作“可访问的”文件I / O流构造函数(channel& ByteBuffer)

时间:2011-05-02 10:51:09

标签: java io

我想知道如何最好地将“可访问”或“可见”一组在我的主例程中定义的文件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时都会向底层操作系统发出请求。

2 个答案:

答案 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