File file = new File("./src/main/java/io/ReadStringDemo.java"); FileInputStream fis = new FileInputStream(file);
时间: 2024-05-27 17:10:10 浏览: 66
这段代码创建了一个 `File` 对象,该对象指向当前项目路径下的 `ReadStringDemo.java` 文件;然后使用 `FileInputStream` 类创建了一个文件输入流对象 `fis`,用于读取该文件的内容。这里需要注意的是,如果文件不存在或无法读取,将会抛出异常。另外,使用完 `fis` 后,应该及时关闭它以释放资源。
相关问题
19. 使用文件IO完成cp命令相似功能; 示例:cp /home/edu118/1.txt /home/edu118/桌面/Test.txt ./main /home/edu118/1.txt /home/edu118/桌面/Test.txt
在Java中,如果你想要通过文件I/O模拟`cp`命令的功能,你可以创建一个简单的程序来读取源文件的内容,并将其内容写入到目标文件中。下面是一个基本的示例,假设有一个名为`Main`的类,它接受两个参数,即源文件路径和目标文件路径:
```java
import java.io.*;
public class Main {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Usage: ./main <source_file> <destination_file>");
return;
}
String sourceFile = args[0];
String destinationFile = args[1];
try {
// 读取源文件
File srcFile = new File(sourceFile);
FileInputStream fis = new FileInputStream(srcFile);
// 创建目标文件如果不存在,或者清空已存在的文件
File destFile = new File(destinationFile);
FileOutputStream fos = destFile.exists() ? new FileOutputStream(destFile, false) : new FileOutputStream(destFile);
byte[] buffer = new byte[1024]; // 一次读写的缓冲区大小
int length;
while ((length = fis.read(buffer)) != -1) {
fos.write(buffer, 0, length); // 将数据写入目标文件
}
// 关闭流
fis.close();
fos.close();
System.out.println("Source file copied to the destination successfully.");
} catch (FileNotFoundException e) {
System.err.println("Error: " + e.getMessage());
} catch (IOException e) {
System.err.println("An error occurred during file I/O operation: " + e.getMessage());
}
}
}
```
运行这个`Main`类需要提供命令行参数,就像`./main /home/edu118/1.txt /home/edu118/桌面/Test.txt`。
package src; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Test3 extends JFrame { JTextArea txta=new JTextArea(10,21); JScrollPane scrp=new JScrollPane(txta); JButton btn1=new JButton("读t3_1.txt到文本框"); JButton btn2=new JButton("保存到t3_2.txt"); JPanel p=new JPanel(); public Test3() { p.add(scrp); p.add(btn1); p.add(btn2); this.setContentPane(p); this.setSize(300,270); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); } public static void main(String[] args) { Test3 fr=new Test3(); fr.setTitle("第3题"); } }补全上述代码
可以按照以下步骤进行代码的补全:
1. 在Test3类中添加一个构造方法,然后在方法中为btn1和btn2添加监听器,用于实现读取和保存文件的功能。
2. 在读取文件的监听器中,可以使用JFileChooser组件选择文件,然后使用FileInputStream和BufferedInputStream读取文件内容,并将内容显示在文本框中。
3. 在保存文件的监听器中,可以使用JFileChooser组件选择保存文件的路径和文件名,然后使用FileOutputStream和BufferedOutputStream将文本框中的内容写入到文件中。
完整代码如下:
```
package src;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test3 extends JFrame {
JTextArea txta = new JTextArea(10, 21);
JScrollPane scrp = new JScrollPane(txta);
JButton btn1 = new JButton("读t3_1.txt到文本框");
JButton btn2 = new JButton("保存到t3_2.txt");
JPanel p = new JPanel();
public Test3() {
p.add(scrp);
p.add(btn1);
p.add(btn2);
this.setContentPane(p);
this.setSize(300, 270);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
// 为btn1添加监听器,读取文件内容
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 创建文件选择器
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("选择文件");
int result = chooser.showOpenDialog(Test3.this);
if (result == JFileChooser.APPROVE_OPTION) {
try {
// 读取文件内容
File file = chooser.getSelectedFile();
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[(int) file.length()];
bis.read(buffer);
String text = new String(buffer);
txta.setText(text);
bis.close();
fis.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(Test3.this, "读取文件失败");
}
}
}
});
// 为btn2添加监听器,保存文件内容
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 创建文件选择器
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("保存文件");
int result = chooser.showSaveDialog(Test3.this);
if (result == JFileChooser.APPROVE_OPTION) {
try {
// 写入文件内容
File file = chooser.getSelectedFile();
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
String text = txta.getText();
byte[] buffer = text.getBytes();
bos.write(buffer);
bos.close();
fos.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(Test3.this, "保存文件失败");
}
}
}
});
}
public static void main(String[] args) {
Test3 fr = new Test3();
fr.setTitle("第3题");
}
}
```
阅读全文