我只是试图从一个文件读取数据,然后将其写入另一个文件。但是每次我尝试使用ps.printf("%s", Filename);
在“ 文件名”中打印数据时,它只会打印文件的实际名称而不是文件中的数据。
示例:
输入文件名是visit.txt(由用户输入)
输出文件名是report.txt(由用户输入)
ps.printf("%s", Filename);
会将单词“ visit.txt”打印到report.txt中,而不是打印visit.txt中的数据
PrintStream是否是从文件读取数据的错误类?
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintStream;
import java.util.Scanner;
public class Veterinary {
public static void main(String[] args) throws FileNotFoundException {
String Filename;
String Outputfilename;
Scanner inputScanner = null;
System.out.printf("Enter Your Input File Name: ");
inputScanner = new Scanner(System.in);
Filename = inputScanner.nextLine();
//CREATES FILE READER
inputScanner = new Scanner(new FileReader(Filename));
System.out.printf("\n", Filename);
System.out.printf("Enter Your Output File Name: ");
PrintStream ps = null;
inputScanner = new Scanner(System.in);
Outputfilename = inputScanner.nextLine();
try
{
ps = new PrintStream(Outputfilename);
}
catch (Exception e)
{
System.out.println("ERROR. Could not open file!");
}
ps.printf("%s", Filename);
}
}
答案 0 :(得分:1)
创建文件阅读器后,使用
Scanner inputScannerfile = new Scanner(new FileReader(Filename));
行而不是
inputScanner = new Scanner(new FileReader(Filename));
以及最后一行
ps.printf("%s", inputScannerfile.nextLine());
您的代码存在的问题是您扫描了输入文件,但未读取文件
在最后一行中,您在(ps.printf("%s",filename))
中传递了输入文件名。这就是为什么它为您提供了输入文件名。
答案 1 :(得分:0)
PrintStream用于输出数据。如果您想阅读,那么可能可以使用InputStream。
一种方法是:
InputStream inputStream = new FileInputStream(
new File("C:\users\Desktop\test.txt"));
byte[] buff = new byte[inputStream.available()];
inputStream.read(buff);
File target = new File("testTarget.txt");
OutputStream outStream = new FileOutputStream(target);
outStream.write(buff);
答案 2 :(得分:0)
注释行 package main
import (
"github.com/jmoiron/sqlx"
_ "github.com/mattn/go-sqlite3"
"log"
)
var db *sqlx.DB
func init() {
db = sqlx.MustConnect("sqlite3", ":memory:")
db.Exec("CREATE TABLE agent (Id INTEGER PRIMARY KEY,);")
}
func main() {
_, err:=db.Exec("insert into agent values (1)")
if err!=nil{
log.Println(err)
}
}
然后将行Outputfilename = inputScanner.nextLine();
替换为
ps.printf("%s", Filename);
您所犯的错是您正在将while(inputScanner.hasNextLine()){
ps.println(inputScanner.nextLine());
}
写入 printstream ,这是文件名的字符串值,而不是文件名中的内容。因为您已经打开了扫描仪进行输入文件,您需要从中读取每一行,而不是将其添加到输出文件的主输出中。以及我注释行Filename
的原因;是因为它将从输入文件中读取第一行,然后转到下一行,但是我们没有将其存储到prinstream中,因此,如果您不注释该行,则输入文件中的第一行将不会被写入您的输出文件中。